Georgia World Congress Center
Atlanta, Georgia
September 11-14, 1994
CONFERENCE PROCEEDINGS
© IBM Corp. 1994
International Business Machines Corporation
Printed in the United States of America. All rights reserved
Georgia World Congress Center
Atlanta, Georgia
September 11-14,1994
IBM, OS/2 and other IBM products are trademarks or registered trademarks
of International Business Machines Corporation. Other product names are
trademarks or registered trademarks of their respective companies
OS/2 TECHNICAL UPDATE ‘94 TABLE OF CONTENTS
AD—APPLICATION DEVELOPMENT
AD01 User Centric OS/2 Application Design
ADG2 Designing OS/2 Applications
ADO3 OS/2 The Platform for Quality Software
Development
AD04 How to Create Endian Neutral Software for
Portability
AD05 32-Bit Native Porting Tools and Techniques
A DO 6 The Hang/Trap Enigma
AD07 Adding Help to Your OS/2 Applications
ADO8 OS/2 and Internationalization of Applications
AD09 The Integrated Desktop — Programming to the
Workplace Shell
AD 10 Understanding and Exploiting OS/2 Graphical
Programming Interface
ADI 1 The Developer Connection for OS/2
AD12 OS/2 Debug Kernel “Hands-On-Lab”
ADI3 * The Developer Connection for LAN Systems
CC —C++ OBJECT PROGRAMMING
CC01 IBM C Set ++ overview
CC02 IBM C Set ++ Debugging Tips and Techniques
CC03 IBM C Set ++ Class Libraries
CC04 IBM C Set ++ WorkFrame/2
CC05 IBM C Set++ Optimization Tips and Techniques
CC06 Performance Tuning with Extra for C Set++
CM —COMMUNICATIONS MANAGEMENT
CM01 Communications Manager/2: The Poser of Personal
Networking
CM02 Communications Manager/2: Installation and
Configuration Basics
CM03 Communications Manager/2: Complex
Configuration
CM04 Communications Manager/2: Building SNA
Applications
CM05 Avoiding Common Problems and Problem
Determination
CM06 Multiprotocol Transport Network and AnyNet
CM07 Problem Diagnosis Using Communication
Manager/2 APPC Trace
CS — CLIENT SERVER
CLIENT/SERVER SOLUTIONS:
CS01 Client/Server Survival Guide with OS/2
CS02 SNA Client/Server in Communications
Environments
CS03 Using NS/DOS in a Client/Server Environment
CS04 CICS OS/2:32-bit Client/Server Computing
CLIENT/SERVER FOR APPC/APPN
CS05 Introduction to APPC and APPN
CS06 What’s New in APPC and APPN
CS07 APPN and TCP/IP: A Comparison of Protocols
CS08 Programming CPI-C Applications with
Communication Manager/2
CS09 Selection an API for Your Application and
Environment
CS10 Using APPC: Basic Features and Design
Considerations
CS11 Using APPC: Performance and Security Features
CS12 APPC Security for Application Programmers
CS 13 Configuring APPC/APPN on the Workstation
CS14 Improving APPC Configuration
CS15 Using the New APPC Utilides
CS16 Migrating Applications from HLLAPI to APPC
CLIENT/SERVER FOR DCE:
CS19 Introduction to Distributed Computing Environment
(DCE)
CS20 Introduction to DCE Programming
CS21 DCE Programming “Hands-On-Lab”
CS22 Introduction to DCE Administration
CS23 Choosing DCE as Your Client/Server Progr amm ing
Environment
CS24 DCE for OS/2 Base Performance
CS25 DCE for OS/2 Distributed Application Performance
“Hands-On-Lab”
CS26 Open Distributed Systems with Messaging and Queuing
CS27 Network Security and Single Sign-On
CLIENT/SERVER for TCP/IP:
CS29 Sockets Programming with IBM TCP/IP for OS/2
CS30 Open Network Computing Remote Procedure Call
Programming
CS31 Sockets Programming with IBM TCP/IP for OS/2
Continuation of CS29
DB — DATABASE
DB01 DB2/2: Let’s Get Small
DB02 DB2/2: Family and Friends
DB03 Data Access Services
DM — DISTRIBUTED SYSTEMS
MANAGEMENT
DM01 NetView for OS/2: Fact or Fiction
DM02 IBM LAN NetView Management Utilities for OS/2
DM03 Enabling Your Application for Remote
Unattended Installation
DM04 NetView Distribution Manager/2 (NetView DM/2)
Basic
DM05 NetView Distribution Manager/2 (NetView DM/2)
Advanced
GP — GROUP PRODUCTIVITY
GP01 IBM’S Person-to-Person Conferencing: Because You
Can’t Be Everywhere
GP02 IBM Server for Workgroups: Overview and
Common Install
GP03 * Lotus OS/2 Development Directions
GP04 * Lotus SmartSuite for OS/2
* Handout not available at time of printing.
OS/2 TECHNICAL UPDATE ‘94 TABLE OF CONTENTS
IT — IMAGE TECHNOLOGY
IT01 ImagePlus/2 Overview
IT02 ImagePlus/2 Tips, Techniques, Trends and
Directions
LS — LAN SYSTEM SOLUTIONS
LS01 LAN Server Overview
LS02 LAN Server Directions
LS03 LAN Server Tips and Techniques I
LS04 Continuation ofLS03
LS05 LAN Server Security
LS06 LAN Server Performance Tuning
LS07 LAN Distance: Remote LAN Success
LS08 LAN Server Interoperablilty
LS09 LAN Automated Distribution/2
LS10 LAN Server Administration “Hands-On-Lab”
LSI 1 LAN Server Connecting to Resources
“Hands-Oii-Lab”
LS12 NetWare Server for OS/2
LS 13 NetWare Interoperablilty
LS14 IBM LAN Systems Communications Transports
LS15 IBM’S ADSTAR Distributed Storage Manager/2
LS 16 LAN Network Manager
MM — MULTIMEDIA AND PEN
COMPUTING
MM01 OS/2 Multimedia Support
MM02 OS/2 Multimedia Applications and Architecture
MM03 OS/2 Software Motion Video
MM04 Multimedia Creation and Management
MM05 * LAN Server Ultimedia
MM06 Pen for OS/2, PenDOS and Speech
OO — OBJECT-ORIENTED TECHNOLOGY
OOOl IBM Object Strategy and Plans
0002 * The In-Taligent Use of Objects
0003 How to Introduce Objects to Your Organization
0004 OpenDoc for OS/2: Compound Document
Architecture
0005 * Visual Developer Tool
0006 Visual Age
0007 Introduction to the SOMbjects Toolkit
0008 * Persistence Object Services for SOM
0009 SOM Metaclass Programming
0010 APPC and Object-Oriented Programming
OOll * Storing Objects in DB/2: The Ultimate Object Data
Store
0012 How to Write SOMobjects in C++ and the Solutions
Offerd by SOM
OS — OS/2
OS/2: THE SYSTEM:
OSOl OS/2 Trends and Directions
OS02 OS/2 and Windows
OS03 Eye on OS/2
OS04 Platform Wars
OS05 OS/2 Windows Support, Inside and Out
OS06 OS/2 Performance Enhancements
OSOl OS/2 REXX Tutorial
OS08 OS/2 Symmetric Multiprocessing
OS09 OS/2 Hints, Tricks and Tuning
OS 11 Using and Customizing the Workplace Shell
OS/2 FOR THE POWERPC:
OS 12 Introduction to OS/2 for the PowerPC
OS 13 What is the OS/2 Personality
OS 14 Tools and Development Environment for the
PowerPC
OS 15 Humancentries and How They Fit with the
PowerPC
PC — PC DOS
PC01 “Alive and Well” What’s New in PC DOS 6.3
PC02 PC DOS “Under the Hood”
TS — TECHNICAL SUPPORT
TSOI IBM Personal Systems Service and Support
TS02 * Navigating OS/2 Support
TS04 Technical Coordinator Program
TS06 IBM Product Certification Programs
TS07 Professional Certification Program from
IBM...for people!
TS08 Certification Testing
TS 10 * IBM’s Worldwide Electronic Resources
TS 11 Group Discussion
TS 12 Group Discussion
TS 13 * Using OS/2 to Reach the Internet
TS 14 * The Technical Connection
* Handout not available at time of printing.
AD01
Goals
David Moskowtiz
Productivity Solutions, Snc.
User centric application design for OS/2 2.1
» Understand the technology
► Develop an OS/2 mindset
* Understand the issues and requirement to
create OS/2 applications that are extraordinarily
responsive to the end user.
Protected mode
► Programs isolated
- From each other
- From hardware
► Cannot make assumptions about access or
sharing
initial thoughts
► What does isolation mean?
► What shortcuts don't work?
► What assumptions aren't valid?
► Think virtual computer
Copyright (c) 1993-1994, David Moskowitz. All right reserved.
User Centric OS/2 Application Design
Memory management
► Paged virtual memory
► System integrity assured
► Code pages read only
► Data pages read/write
► Allocate different from commit
► Shared memory mapping
► Sub-aiiocatlon
Memory concepts
► How can i exploit flat model?
► How can S keep it efficient?
* What is the impact of a 4K page?
► Think memory objects and granularity
► Think about working set and its impact
performance
Multi-tasking
► Processes
► Threads
► Scheduling & priority levels
Process
► Unit of resource ownership
► Contains one or more threads
► Child processes
► Execute serially or simultaneously
► May start other children
► Does not put parent to sleep
Copyright (c) 1993-1994, David Moskowitz. All right reserved.
User Centric OS/2 Application Design
Process concepts
► What do 1 want to isolate?
► What do S want to protect?
Think about resources not execution.
Single tasking
Multi-tasking
#
W
w
w
#
#
#
Threads
► Dispatch-able unit
► Shares resources of process
► Start, suspend, resume & kii!
► Can create in a suspended state
► Any function, subroutine, or subprogram
started In a special way.
Copyright (c) 1993-1994, David Moskowitz. All right reserved.
User Centric OS/2 Application Design
Threads
Thread concepts
► Parallel possibilities
- Background operations
» Any blocked request
- User Input
- Hardware access
► Long tasks
- File I/O
- Message processing
- Paints
- Printing
This is just a start -- think about it. What can you do
to use threads to provide rapid response.
► What overlaps?
► What can be done concurrently?
► What am I waiting for?
► Think thread pool versus create & destroy.
► Concentrate on responsiveness!
► How can I empty the hopper faster without
impacting the rest of the system?
Scheduling & priorities
► Only one thread has the processor
► Preemptive time slicing
► Supports real time programming
► Dynamic priority in 4 classes
► 32 levels within each class
► Round robin within class
► Use priority properly!
R cubed - the 3 R's
► Rapid Response Required
- ...to the end user
► Requires a combination of threads and priority.
► If the user sees the clock face or system
performance degrades, something is wrong that
must be fixed.
Copyright (c) 1993-1994, David Moskowitz. All right reserved.
User Centric OS/2 Application Design
Thread states
^ Running ^—
^ Suspended
■x
a x
\
w
a
1 X
\ T
Ready -4-—!
_^ Blocked
Interprocess communications
► Pipes (between processes only)
► Shared memory
► Queues
► Semaphores (both inter & Intra-process)
► Exception handling (per thread)
► Presentation Manager specific
Semaphores
Semaphore triggers
Types
- Event semaphore
- Mutex semaphore
- MuxWast semaphore
Use
- Signaling
- Serialization
- Multiples or...
- Level or edge trigger
Copyright (c) 1993-1994, David Moskowitz. All right reserved.
User Centric OS/2 Application Design
IPC concepts
► What do I have to communicate?
► How much data do I have to move?
► How will I coordinate the threads?
► How wilS 8 prevent deadlock?
► Think controlled cooperation.
► Concentrate on user response.
Performance Techniques
► Proper use of semaphores
► Object windows and user define messages
- Request, acknowledgement, and query status
► Profiler and execution trace analyzer
Use threads to enhance performance not
overlap operations.
File system
► Sharing simitar to a network
8- File & device I/O
- Fife operations
- Directory operations
- Disk management
The User Interface
► Use the right device for the task.
- Don't force a menu when a button wifi do.
► Keep the interface dean and intuitive
- Intuitive to an end user not a developer
8- There are three types of "user friendly"
- Novice, expert, and programmer
8- There are 5 Sevefs of learning
- Novice, expert, wizard, warrior, author
Copyright (c) 1993-1994, David Moskowitz. All right reserved.
User Centric OS/2 Application Design
Summary The ultimate test
The different between DOS and OS/2:
- In D0S our responsibility was to do every „ Glve the application t0 users and , hen frlm to
thing possible to keep the system busy. thern . If they make suggestions don't defend
- In OS/2 our responsibility changes to keep the your actions, fix the product,
user busy. This Is the central core ©f our
efforts to design a good responsive OS/2
application!
Questions Thank you!
► The only dumb question Is the one that isn't ► For more information contact:
asked!
David Moskowitz
► The 4 R's of OS/2 application design: Productivity Solutions, Inc.
- Remember, Rapid Response Required! 164 Avondale Road
Norristown, PA 19403
Voice: 610-631-5685 Fax: 610-631-0414
internet: 76701.100@compuerve.com
Copyright (c) 1993-1994, David Moskowitz. All right reserved.
Overall Application Design
Designing OS/2 Applications
David E. Reich
IBM Corporation
Boca Raton, Florida
60,30,10
- Spend 60% of Your Time Designing
Pay Me Now or Pay Me Later
- 30% of Your Project Time Coding
► Coding Is the Implementation of Design, Not The
Time To Design
- 10% Test
p» Test the Implementation of the Design
If the Design's Broke, Fix It Before It's Too Late!
Designing OS/2 Applications
David E. Reich
Application Features and Initial Specifications
« What's This Thing Gonna Do?
- It May Seem Overly Simple, But Decide on the Primary
Function of the Application
- Don't Obscure This Purpose With Fancy Tools or
Utilities
- Utilities Are Just That; Utilities.
- Complement The Main Function. Don't Hide It.
Application Features and Initial Specifications
« How Will You Present the Application?
- Full Screen?
- PM?
► Full PM Windows?
► AVIO Presentation Space?
- Workplace Shell Interaction
Designing OS/2 Applications
David E. Reich
Designing OS/2 Applications
David E. Reich
Application Features and Initial Specifications
a IPC Mechanisms
- Clipboard
- DDE
- Pipes, Queues
- Data Protocols, Formats and Filters
a REXX Hooks
a Printing
a Fonts
Application Structure
a Isolate From the Underlying Hardware
” Use the OS/2 APIs and Device Independence
■ Use Good Modular Design with Clean Interfaces
■ Should You Use Multiple Processes?
- General rule: Use Multiple Processes When You Need
Protection Within the App
- Communications and Data Sharing Will Be More
Involved, However
Designing OS/2 Applications
David E. Reich
Application Structure
a Should You Use DLLs?
- DLLs are Primarily Used for Sharing Code Between
Processes
- Used Also To Control Delayed Loading of Code
- If You Have a Series of Applications That Use Common
Routines
- Maybe Your Whole Product is a Set of DLLs
- Don't Use DLLs Just To Make Your EXE Smaller
► Code Is Loaded in Pages From the EXE Anyway
Designing OS/2 Applications
David E. Reich
Building Blocks
■ Now That the Goals, Functions and Objectives are Set,
Take the "Black Box" Approach
- Divide and Conquer
► Block Out And Cleanly Interface Subsystems
- Separate Out the User Interface and Worker Code
- This Will Help You To Incorporate Multithreading and
"Parallelism" in the Design As Well As In the
Development
* Let The System Do Your Work For You
Designing OS/2 Applications
David E. Reich
Design^ig OS/2 App8cations
David E. Reich
Designing the User Interface
Window Design
Presenting Data
- Windows Are Your I/O Medium
Window Controls
- Sizeable vs Scalable Data (Scroll Bars?)
~ Menus, Buttons, etc.
Dialogs
- Carry on a Dialog With the User, Then Go Away
- Must Be Fast, Easy and Intuitive; Flow Smoothly
- Can Be Used To Control Interaction With Others
Application Defaults
- USE THEM!
Designing the User Interface
a Workplace Shell Interaction
- Objects and Templates - Step 1
* Simple Drag and Drop Already Built In
b» Just Be Able To Take a "Command Line" Parameter
5 - User Must Set Up Associations or Use Drives Object
For Drag and Drop
- Objects and Templates - Step 2
Create an ASSOCTABLE For The Application
> When the Shell First Sees It, a Template Will Be
Created For Its Documents
> Custom Icons For Your Document Type
& Still Just Basic Drag and Drop
> No User Set Up Required
Designing OS/2 Applications Designing OS/2 AppScaSons
David E. Reich David E - Reic h
Designing the User Interface Designing the User Interface
Workplace Shell Interaction
- Writing An Object - Step 3
► Inherits All Previous Advantages
► Can Perform ALL Functions Within the Shell
► Can Override Methods of Its Class
► eg. Drag and Drop Printing
*■ Dropping onto running instances
Workplace Shell Functions
- Application Launching
► Use Previous Methods
*- DO NOT Write Application As An Object;
Workplace Objects Become "part of “ the Shell
- Single Process Model
The Shell Is a Single Process
► Has a "Monitor " Process (The Freddy Shell)
*■ All Objects Are In DLLs Which Are Run In the
Workplace Process
► Communicate With the Launched EXE via DDE
etc.
Designing OS/2 Applications
David E. Reich
Desisting OS/2 AppBcaf ons
David E. Reich
Designing the User Interface
Designing the Worker Code
Workplace Shell Functions
- Subset Functions
► eg. Drag and Drop Printing
► Where the User Does Not Need To See The
Application Window
- So, To Write An Object, or Not To Write An
Object?
► If All You Want Is Custom Document Objects.
Don't Bother
► If You Want To Include Any Other Interaction
With Workplace Objects Such as Drag and
Drop Printing, The
For PM Applications, Use An Event Driven Model for I/O
- All User Interaction Generates Events
- To Be Delivered To You via PM and Your Windows
- Use Your Main Window As the Work Dispatcher
► Allows Significant Reuse of Code
► Object-Oriented Direction - Portability to True OO
Your Own Memory Manager Package
- You Can Make Assumptions On Application Memory
Usage the System Cannot
- Map Out Memory Usage For the Application
► Use Locality of Reference To Minimize Paging of
Your Data
Ctealyiing OS/2 Applications
David E. Reich
DoslyiSng OS/2 Appi cations
David E. Reich
Designing the Worker Code Designing the Worker Code
Memory Manager Package (continued)
- Sparsely Allocate Where Possible
► Especially Useful For Large, Complex Data Structures
- Use Guard Pages
*■ Register An Exception Handler To Commit When
Touched
► Useful During Development To Fine Tune Usage And
Performance - just log the exceptions and analyze
- Write Your Own APIs to Allocate and Free Memory
Should I Write a Device Driver?
- 2 Primary Reasons For a DD
► If You Need to Write Support For a Specific
Piece of Hardware (Scanner, MIDI etc)
► You Have Work That Must Be Done At Ring 0
and There is NO OS/2 API That Can Do It
- Isolate Your App From The Flardware
► Unless Of Course, Your App Is Itself Hardware
Support
- If You Must Code To Hardware Specifics, Write a
Generic Interface Package Rather Than Sprinkle
DosDevlOCtl Calls All Over Your Code
Designing OS/2 Applications
David E. Reich
Designhg OS/2 AppScaflons
David E. Raich
Designing the Worker Code
■ File Layouts
- EXEs and DLLs
► Use DLLs For A Purpose
► Isolate "Subsystems" Such As Hardware
Interface Routines in DLLs - They Can Be
Replaced Without Rereleasing the Application
► Controlled In-Memory Code Life
- INI Files
► Don't Muck With the System INI Flies
► Use Your Own INI Files For App-Specific
Persistent Information (such as app defaults)
Designing OS/2 Applications
David E. Reich
Building the Core Function
■ Memory Manager Package
- Your Own APIs
> GetMemQ
> Free Me m()
- Many Choices
s* Guard Pages
> First-Fit
> Best-Fit
> Assumptions Based On Function
Designing OS/2 Applications
David E. Reich
Prototyping the User Interface
» First, Get the Windows Painted
- Just Get the Windows to Come Up
a Multithreading Considerations
- Keep Long Jobs In Mind
- Use the Main Window Proc as a Work Dispatcher
- Use PM's Thread Handling
► Object Windows
► WinGetMsg/WinDispatchMsg
► User Messages (UM_*)
- Keep the User Input Thread Responsive
Designing OS/2 AppUcaflons
David E. Reich
Building the Core Function
■ Multithreading and Synchronization
- Use PM's Object Windows
- Semaphores
- Critical Sections (for extreme situations)
- Should You Even Use Another Thread?
► Always Think Parallel Operations
► Make Them Multipurpose (thread pools)
► Always Consider There is Overhead With
Threads
► Stay Clear of Race Conditions Unless You Are
Sure You can Control It and The Performance
Gain Is Worth It
Designing OS/2 Appficaflcns
David E. Reich
Performance
Performance
■ Memory Tuning
- Code and Data Working Sets
► Use Guard Pages To Measure Page Usage
* Group Cross-referencing Functions In The Same
Pages - Locality of Reference
- Alias APIs
For Each Function Not In the EXE, Fixups Are In The
EXE Pleader and In Swappable App Memory
► Rather Than Have Many Of These, Alias To Your
Own APIs, Then You Only Have One Fixup In The
EXE
► Less Paging To Call System Services
► Speeds Application Load
a General Tuning
- Code Load Optimization
► By Delaying DLL Loads With DosLoadModule, You
Don't Load the Code Twice
DLLs are Primarily For Sharing Code Between
Processes Anyway
► EXE Code Loads As Needed, Why Load and Fixup A
DLL As Well?
Designing OS/2 Applications
David E. Reich
Desiring OS/2 Appflcaflons
David E. Reich
Performance
■ Thread Performance
- Change Priorities Wisely
► Don't Starve Yourself
► NEVER Poll (Use Semaphores)
► User I/O Threads Should Stay at Regular Class
- Critical Sections Should Be Avoided
► Heavy Overhead
- Idle Threads
► Change To Regular Class Before Terminating
► Can Cause App to Wait Until System Is Idle
Before Closing
Performance
■ DLL Placement
- Don't Fool With User’s LIBPATH
► You Can Hurt Overall System Performance
- Place Your DLL in Your Own Directory
► Have Your Installation Program Make Your Directory
the Working Directory of the WPS Program Object
► It Will Be Picked Up Automatically By the "" In the
Standard LIBPATH
Designhg OS/2 Applications
David E. Reich
Designing OS/2 Applications
David E. Reich
Performance
Non-English Language Support
PM Window Performance
- Try to Keep Often-Used Windows Around
& WinShowWindow(hWnd, FALSE)
& They Consume Resources, So Be Frugal
- Fill Windows Invisibly, Then Show Them
► Eliminates Flicker
► Gives Visual Cues to User
- Let PM Manage Work
► Don't Recode Things That Default Procs Flandle
► Use Established APIs Rather Than Messages
- Use Proportions of System-Supplied Values
► eg. Screen and Printer Page Size
Stay Away From String Literals
- Use STRINGTABLES
- Use Message Files
g*» Make Sure To BIND Messages To the EXE or You'll
Blow a Whole Page on a 44 Byte Message Segment
Use Font Metrics and Screen Proportions To Size
Windows
- Will Keep Your App Looking Consistent Regardless of
Display Resolution OR Language
- Use WinDrawText (DT_QUERYEXTENT)
Structure Your Source Trees So All You Need To Do Is
Change an Environment Variable To Build Another
Language
Designing OS/2 Applications Designing OS/2 Applications
David E. Reitfi David E - Reteh
Finishing Touches Finishing Touches
The Last Thing Written Is Usually the First Thing Seen —
The Installation Program
- Don't Neglect It - It IS An Application
- Make it Look Like the Application
Multithread to Make Code Unpacking Faster;
Update CONFIG.SYS. Write App INI files
► Provide Online Help Concurrent With Installation
- Provide For Multiple Installations on One Machine
► Creating WPS Objects, Updating System Files etc.
► Uninstallation - Remove Yourself Completely
- Make Sure You Write It So You Can Reuse It For A
Series Of Applications
Media Considerations
- Floppy?
- CD-ROM?
- Install Over LAN to Many Workstations?
Packing Your Code
- During Installation You Are Usually Not Utilizing
the CPU at 100% - Use The Spare Cycles To
Unpack Asynchronously
- Every Diskette Less You Ship Is Money You Save
- If Multithreaded Properly, Can Actually Be Faster
Than Straight Copying
Designing OS/2 Applications
David E. Reich
Designing OS/2 Appflcaflons
David E. Reich
Stephan B. Epstein
Staff Programmer
. IBM Boca Baton
Mill
■!►.. Benefits of an OS/2 Deveio|>fhent Process
|p|s. i^l|sr».>pey|joisrill 1||||!|
: ^,1f®rp|oii:Con.tro! all- Staging '/■
Notices
The following :ie'rlfe :^©Jtr : a<ienS;a^s ; '^F:;r^^tl&ieiFeepi- i#eWarka : p-lt,:
of the IBM Goi!ppratioo :: in the:Unita4 ; ?tat# and/or ottler luritri||0
mill! mi .. - iiii
-OS/2:
;£\ ^ : :.|- : v.•
. - RISC System/6QQG . ,
Copyright 1B-M Corporation 1994, All - rights reserved. •
What this is...
!Quality of satires and executahles
:P : /Effective.:pe|ili j catfo it >11
n Build
► ';.Softwar© : tnt@§fSl . : mi
Benefits of
;Whet tills isn't:
>:.;Pf0|eet;syfafif8eiient-"
► Metrics
► RequIrementsAnalysIs
► CASE Environments
^ : ; --'^s A 'I
► Consistent Verification
► Disaster i^^lver^;.;-;- :: i- : :.
:»-';|lil|||pables are Ihe f inal measilre of Quality v i
► Withoutcontfoi eversource and build, there is
no quality!
■ . I\fenagin8'ebde|be|!i|(|a
► Identification of Changes
► Version Control
► Change Control
► Auditing
f Status'Accsun|irt|. Mfe ! ?i!l
p|g!|;V;: : ::Prog;t^iii;Oreatiort - "■ : -:.i
M^ndaird irotn ^F@yFa^tlmel , to team to Precast
:r ; • jipependeney CWepkiog. ••■ :
Effective tl/tatntenanpe.atid Support
.► Recreate customerbase ; .. '
►; Incremental additions^and modifications
► Record Of idiown me$‘ ; '.
Consistent verification:
► ;Buiid yedficai^^
|! Ensure proper execitipn.'-- : :::. ; '.
% Standard acceptance criteria
^Execute- rapidly
>• Make widely available
* ;: Coiittnaousiy ppfpVe:%;|';- ; 4:
. Reduce Regressions , 1 Cycle time
Detect errors
Avoid propagating, fixing mistakes ; T:.
Reduce Build Brdaks -
pis^ferReeovefy
;Previ@w^: : pff ©;rt^ :
Foundation for Formal D.saster Recovery
: -p|^r^g[e J\ ■■; :-C'".-.; ; :r;
NMAKE Utility
p.SS version of MAKE ;' '
Part of OS/2 Developer Toolkit
;pkKEMPslie
► rConfigurafcility' | || s ■ .
► Flexibility lifM
§ Rule Driven' f
| Dependency Gttecking. : /|'
P Automate Prograitt'Oenerltf on/
,►. minimal Buiid/feOuiM Mprt," ; V
► Make Sapki^i&-;y-: : ;^ : 0'--
► /Dipia Driven Program Execution
Important NMAKE Options
ipKiiftLEMafem Usage
;^ :;; ; S;ispp«s?s^ ^Rliy ft! pl©vp»isli«l^ ; ; pf ©ostiiTion source
| ;;;|iffer©rit : p#r@ : ^efif?|tofis for Compiles '■.
MAKEFILE Macro Usage:
ii|cic 35 ep : £r G'i- ^■p|i 6 ^Sfe-X : S±^ : : 6 :!^gspj&sSEi|i^|!<q! 0 is.^ c:; \ lyraA^E 1 x^ooLrS
C ; :: ■■• i-v : \
|.'-■'- ". - /•'•■' •. :. v" \'.
*di ..::;!!;: : : ;v: - :; : . ; ]: : ;: :: i; !i i: 1 i?: ; ! : : : : ... : : : :.. /
mwjnooi >&* \mmm . exe
‘||'x;'v; v'•: ; : :i •'• •; :•••••::•: • g; : : £* ? ,;■•/ ; • v.'. •':. •; • •. _.'. • . . -i: •
; |:!ir ;;• •/ •. v ” • : ‘ : : x. : ; ” ;f : * ; : V;; . •:; : ; : ; x '/:; :: ; : :; •; : • • V • . •
.;$iili|^;J : ' prog-irp™.7• : ’!_ :::j:. ••
MAKliiLi Macros and CondStlonal Setupj
A*vExamj&io
$U 4 ?i ;;:'k’.y' '''; ‘ "•• ■ \ •' • ':' . . . =;,. : : ':
11 : -V’ : : V-V \: x v V 7 ••.' :• ' : x.... ’ ’: V.'/ . ! 7 ' : : ’ :: x : V ' !• ’• ’:
: ••:.•: .. • • : :: '. : \ \ : :: • : : : . 7 : i i i ! •'•••:•: ; . / v : '
• /&■'‘ 7 / ‘ . Yy 7 / • •'•••;: i • . : 7 '' ''• •': 7 . U ’
• 7 V 7 . '■ > , : 7. : 7 •'!; • • '.; ,• .-, t :; • : :/.7 -7 /;
'i • 7 V:: V.'' .-I.!!' ‘ '• •••!:.' j‘! : x V‘ .. •• ' . • • i; E. V .• • •
OB\ 3 L J $ ($£$>>£•} ,\mai h ,- 6 by $ < BS{SI\iSh j, ' : $1 \ /'
: : ’ ' xV V V •:'' VV- '? • ' " ' , : : ’ x ‘ ^V:: f;:’.: :
40 §:jtoB>- /F<?$'{-OBST>A$- \* S3'. qtej '$ 'i*m -y ; : '
•irWaii?.•• • % . •• i: .•.••' V:-’
. r : • E: : : : •• : !' X ‘;J:
'J^j; SixI'xE:ix ^^ ':*?$ 7^7!x••/:•.../ 5 x;!
%xe 7 '. 7 $' { 04 I> 1 £T }. : /yf yy /..^ . 7 >;:v. : ; •!..
\^rx> 9 ra»/^& y> ctef;
aftd; ■:
Dynamic Envl rorlrnent Sailings
► ^Deflng R&farenqes;.^'Madras.
|:;;:D^iilia ? iilapiliafai^n^a : in ; :M)|ICEPILE
inherifedMacros.
* Sysa’^MD fife tojexecpjie iynarnic; anyimripenl
Dynamic Environment Settings ■ Exam pie
;; :;;;x£; : ;• : x : : -f f CDgnt;j^^ntie^^gfv:■ : -lx : t,v. , 7 ;' : ; : 7
SB^feOGAlL-'' '•'' V ••'•:•:; . '. V: x : - : i x-Y ■•:•:; •• • • : f Y : - : :.: :X : 7 7 : ' :■ , :•::'; S? ::;: ' :: : . : - :: • •: • • ? X- : •:: Y
S&T BASEDia-*l Y- :• V.. -V Y :;;: : V!,7Y... :
-:'P : A?:^^BAS&DIS&'UBMCBPYfe itu : ;:: ' / Y \ V •'• ; •>;• •• • •: • • >,• ' x •'•'X :• :••,:y
SSI- hf S~1sB£S£PIft%\j m$W?\ f IS% 7 ■• VxxV Yl;/:. . ■': : x • ) x : ' : • i- • • '••••' . \' ••• ^ • ;I V; ' VY 7 > :
.sfei> ia*\ imhpp \ ti £ i , b , ms&VM .7:7 • > • •7 -' • :'•' ' • x • • ••-.-•. V • ' ' \: •>• • '••' '•• ••'
ssr .^QKs-jaBis^&Asa^^ • -7
$ Zt ■ .:iBEI»PJfPX»DKE'SC x »EH< YBBS $C££. NDXTO t . : «C&#*&,■':' . ,7
set w^basbui R%\me x• : 'x7x 7 y' : • •: ••' -. :: 7 •...••••••'• • • .' ' '• : :••; •.7' • :' ■• ' • '
s&r by-skt-S'^,, q, $, o, ■&, ^:q < $, d> o ■ ' 77 : xx ; :.. ' . ■' • •• ;'\ • ■ '■■ •':
: §&c±L<rD» •• '• ••• •'•' ' ••. : x- - \
BlaAfefi « %3 44 %S ^-47 3fe8 %$ . x" '•' •• ,-x'- V. ••.'••• •' .
$acao oer : •'•'. ■ • /x 1 - :: :•:.••:•:. • •••; . : : •:,..;• -io:::-: :: : ,.-■■ vV^v:•;.;' • •• : , <•<.• •,: w • d>•• •
: g^OEpQc.Aii •.. ••'•. ••-.y:...- •' •. • ■ •:• i.. . • •/.' . • :x'. : x: : . : : : ;x .• •: v ‘ • •, x *
■DynamicEnvironmenlSeliinifljitiltple
:: ••• • x.••••..•. : : ••• dv.:. : :• •• • 'v : :• •'‘ : x ::: • .• :; : •: •'!
.w. imMtt i m ;!:■■. ' v •. ' :■ • ••- •••■..•■ ••' • v •. V " ;:•=• Wi
\t<x>i^ : ... • ; .. . •: • v.: - ‘I
: icmi x l tdf ^ \M l? )• $ \&%$. ? $' ia^seo rajj wools:
iiSyS $<&$}\ its. )v;/x;:-:V: : :{;y : .V:x : . • • •• x .. : .i
U sewi ViiirssiuSs'-?:S t.cpp-rtXB^ciAss; WW- :•
: ''. V; : ft-.. V:' • : ’ x x’ : V. : ‘ : .. ' : • • ’ ‘ : x’ 1 -':
BOORSKS£^$, )t \BBLB
.ilct'fe.)..• •; . • :v: : ‘y;-.:y• .d'.;: J';y.;■ 'd'. .,,y;'. .. x'; ;X - i
Dynamic Environment Settings texampfe;
iPontinoeci) :
e ; i%$ pffAi': - : : : ; x;.'.C-?'••;•••
jfey-ELpp < 3 t DEEOG >db§ , loq •!:.;• .
•niy. 5 tp^: y ^KOlpO •• 7hi >newt *
pellet Testing' pVT)
¥;.:;^^eiirsi:^eelli^ ii W
■^f. ^p\%;^»!itileiiies -.L/i^^:
;penefi#;Mipr : i
Ji®y' if -; ;Si
► Identify & Prevent Ma|f r ftegressi©ns
I Prevent Propagati on of: Pom Software
tv'^vc* .id ■ #?;
^ : BVT vs. Formal Testing
► ISVT
": ►•ibrhitiil .Testing:::.: 'j;
■:’•'•'•■ :%vr :1 ..-.*c faS*:'^" ; ' ;; :
•• :'.•• ~ Detailed ; -.
' :: '%,;AiitQmafic ; / :: ',:
••K" ;:;-:f.'Irwolved
■ - Shallow
~."Pooa«M ”•;•■•
- Wide •
'v/r^eciffc'
- Representative
~ support Continued
•,; .• Effort?.l||!I|:i!|||;||
. . ^etorsaffectingBW
►. Type of Software v
► Environment Considerations
•.V •
: . : ..«c System Platforms
:."■“ Peripherals'
.^:^. : AS*f ■
LAN Usage
► Common Tools and Procedures
► Common Source and Build Structure
► Leverage for Development and Build
•Cross Version Qe#|;opmefeif; ::
ill;|:;| Multiple ■ Products
|. *•*■ Multiple Environments
HHP^'. • '7V:;V :,M
► Boot Manager usage :-l|l
Lan Usage Example
i SingleSetof Tdol| ; |
► Product 1
- Single Source lllllllllllllBIIII
- Multiple Versions
► Product 2
Single Source
- Single Vernon I
► Single System tor Development, Build Server
Soot Manager Usage Example:
|| Single Product, Multiple Environments
► Single^^Versl&a of Product '"
► Has Reference le Be^Drfve .
► Must Test with OS/2 2,0 anti 2,1
|ypp'pher:enyirp-nmentai fasten •':
► Single System available tor Testing
:lgdt|lpfiage||i||gi:
- Mumpie Opetttln^ipystielp
► Multiple Products .
► leverage Test Resources
Single Product, Multiple Environments
(Continued)
Example; ||
Mvltipte
■ Configuration Management Version Control
• Client Server
- OS/2 Client - illllll
RISC System/8000 AIK Server
• Token Ring or -Ethernet
■ TOR/IP Rrotoool -
Version Control -
Defect Tracking
Access Control
Evolution of Staging Builds (1)
Developer
1H!
* family
ilii# ©NtriiS';- .i
V FILES .
► RELEASES
► DEFECTS
^FEATURES, -"
.►.TRACKS '
Revels .
► LEVEL MEMBERS
► USERS - o
Evolution of Staging Builds {2}
► Efodiiict has 3components
- Editor
Code changes made ;
:► - Buiids defined via a Level
►•;|acit#m|K)h^t:|»rfomi^^in9 builds . 1
p'^brttont of Verified Staging Build added to a
£!’f*rdd.iidt Build Leva!
.Evoiuiob of f tsgipg Builds14)
Bevel
Staging
Build
Staging
Build
Staging
■tiuiidr;:.:
CMVCStagihg Builds Example
- •. ’ (Continued) ' : . ^-:=i ; iOISIll!!illll
To checkout a fits ?*'p
file . c "•irelea&e apll • ; : .•
Toobookioafita .
’ £ lie - check ip.- -edi t : \ m a in. -c • r<fe £e'ci&' PI 7 ; pace-lease apll ;.•
XaifeiffijJggsl . •. :C'J|oi||£.:" : pL -I-'? ■ ■■$kM2)?:¥2
' 13 ppiape pie;' ■edl!£: : : p iliiade • ^pi 3 . : lj ; ;:::V; : ; -y. : .• Pi; • !; •<! : !: •, •: : i!•; • : j - PPil ; : ':|i- i
•Ieve 1 member• ,-crebate : pdefeet • : iii • p'-irele:aee. apl- 1 '. ple vei' edi2
To add a track from a. stag ing build to a product build '
leve lised&e d-ppdefedt: Op, ;|:|||Le a ise'/ .4pill.' -l-eve i .p* i -7
OWG and; Staging Builds
CM Mof irtati OS/2 en vironment
^■^Scaialsle "v ; :
*: Deeentralizsd: ;0 r : :
Iliiaiilllillilliilwpre;
James Gitg
Personal Operating Sys|§|ll
IBW, Soea Ftaton
A Qtiicfc Htery'fj^ifrropiiligig Bt-Dal#;,**iiN|“Pess ,, l
Endian Ttietriesp-; ;
SpteritppW
Design & Programming &uiMin*f§
Content
VWliere M®J :
cf«t$a £?pe= ; :-;f!; 4 :|
hf{fie Most Significant Byte ; £
: : :S-:=Q-f- ”JefEEj(o§t w . b^t©!
:^ : :|iiti|i;ii3|M6 : (b6^:aSsi|||)f : >||
the lowest address to the' I
-11111111
: ’‘r^pbtmoM"; fc® ^: lllilllllBi
'4%®S4/posfihie^l' : rh^fe|
irii®
■ ■ that effect the byte OFdef df
nwifibyte scalar data
S/| Dtg-Endian
; : S fSSfiiSI
ll ;:," '; A+& ;a+3
Gullivers Travels
jy, .:,"
lliii
■iMsi
■H
IKIIll
lsbII:.-:
: ;j:5^4^.; j*
Little-Endian
(Petabyte j
s |l!illr,Eggs' 3 t;tbie«niyier fetid * Many hundred laFpe l lilf l
Key Endian Ideas
► A LE data item is equivalent to a
I byte-reyerssii BE data It^ttri;
► For code and data portability, make no
■ : programs lng ; ^sumptIon$' ;; abo||l|i|;^
■ - internal byte order'd! scalar data jf
Data Example Of Endian
struct { double i; // 0x1112J314J516J718 } si; is
struct { int i, j; ' // 0x1112J314, 0x1516J718 } s2; 1
{struct { short i, j, k, I; // 0x1112, 0x1314, 0x1516, 0x1718 } s3; J
BE Address Mapping 1!
m& ■ im
11 ! 12 | 13 ! 14 s 15 j 16 i 17 ;18
00 i 01 j 02 ! 03 1 04 1 05 j 06 I 07
1 11 1
, •LE Address Mapping f
MSS LSS
11 | 12l13114 15116 jIT 118
07 j 06 \ 05 1 04 j 03 I 02 | 01 \ 00
11 j 12 113
| 14
15 116 117 S18
15!16|17|18
11 112 i
13 i 14
00 I 01 1 02
03
04 | 05 j 06 | 07
: v: • ..;•
07 | 06 | 05 | 04
03 | 02
01 1 00
11 | 12
13
14
15
16
17 118
00 1 01
02
03
04
| 05
06 j 07
■1
17 •
18
15 i 16
13
14
11
i 12
07 !
06
05 | 04
03
| 02
01
| 00
James Gillig 08/01/94 AD04
Page 2 of 9
istruct {
inf
a;
//
0x1112 1314
word
double
b;
//
0x2122 2324 2526 2728
doubleword!
char *
c;
//
0x3132 3334
word
char
d[7j;
//
byte array !
short
e;
//
0x5152
halfword
int
f;
//
0x6162 6364
word
RB+ m#A iiiv- : , .Ml :;: I S? Mfmrrfrir? S'*: •*.****/
j|gdii|j|pps. ApgSifrif;;
: S* Be cognizant el the type of address nutpplrig 1
|||p: r SE, ii, other fillSBii
fif; : : *| B|':;dogniza«t of Its form of representation - HI
IHIfg Lepo-Riglttfddressing or Rfght-To-Left f|
LE Mawltti, t#R®lSSW$ M Mappings B-T4.
James Gillig 08/01/94 AD04
||1§A. CoinparatNg VNafr ffilpipt;;; f ; -■
Big-EmiUm igjli/ |||ll/pl
fc-T-8 : form)
A+o A+i A+a- At4 ■•• : ‘;;:ii:: : >f,'':: : :-.: • *+$ m m .•
•• A+& : Ml-
Little-Endian -HilliBIB! ' Little-Endian j
Endian MmM
* Endianess
- Being of 8 certain
i;?i| Endian type or Endian
mode
-The technical
|£f considerations for i'; - :’ :
!!i;iciessdittef^:i^isi
environments
► Endian mode - iillilMli
i' processor executes in LE
■• {or BE) addressing model
p-
I IsIdiiaiieK ;
gi-Endian - A processor
thatcan he s*itehedby
to run in i
either BE or LE mode
Page 3 of 9
fil||
loop: cmplwi r5,0
beq
done i
iwzux
r4,r5,r6
add
r7,r7,r4
subi
r5,r5,4
b
loop
done: stw
r7,total
MSe BE Mapping tSB tsss >-E Mapping Lsa
► Orse source code set, many
llfciriary versions
lit- Recoppife the source cqe^J
IpfeafeKjgPet (^oc^pfSjf
- Endian Type
;lf;’■'-=f ; SAhar>d. Ertdfetr* Cfs#d^iS:p|i;':;=:•:
' : . exeeytrart;: Jlllll r-i JI ■!S
" : ; : '; ••;. v. i&i&iiiProcessor ’X’
Recompile l -Binary |§£ \ sa "']
& RUIl |g|| l^ ilk Endian!
fiinfi
i: .Source |
/Code |
.; ’Processor 'Y$m
pjiBinary
llCode !;i
:i;|Verskmli:
EmulatJam
> Endiarreffects b^drtfer:
i xe % a ? m tc Um$
. .■ ~|MBil>ifti: : scafar;<JatS. I ;;i
||i|||Prqcessor 'ZJI |
ISA :j
lEndiaill
James Gillig 08/01/94 AD04
Bi-Endian an# .
Bii# LE controls for OS use
BE/L.E memory (addressing) mbdetllP
i' ll! ! Idf F. . | ".i| ■■:!!:/ : V V :
* When In-UE mode, fields LE mapping with !|
lllimpie address modification df Sow ortieritire©.
|j| : ' ■.' '|jjjj$j| differences
I'Referericethe^ip^^Arclilie^re'^ook j§
-Reference user’s manual!!® r lip models Hill
mgllJPevicesi-Drivers end Endian
Mwwww> jj <w w iwwwwwww w ^ w:>wk * w ”^
memory, bus, devices)!: :;
: ; . I . .. spnsld alii . : ll.liMI lM
!' Propislorancl memoryaddressing/model.;:
^iBpeciati'Endiarii controls
swapping)
j§msibilities ;;: I; ' .i
CQrrseatlblitvafdftvIce
~ Perform #0 of data
^Swapping* Converting}
■ MSB.. - . ■
0(3 :• ... • .:. m :
LSB
: 2%} ' :.m: : :, : ?ait
10101010 00110011 00000111 11110000 mvtoe
. %a . ., b , b , „.......... C 5.. „ ,U, T
00000111 11110000 10101010 00110011
cc dd aa bb
■ ^XT"- :
3. ** i ^ a V"-
fej:•' ;■;•?;' W$\ li;!ifj : : •. V 3 : .''• •. . Byte address
1 1 1 1 ooool 000001 1 if 0 0 1 1 0 01 ill 0 10 1 010[
dd cc bb aa
smpp*i
:&ft |||||
00001111 11100000 1100110001010101
dd cc bb aa
?: \sb 31
v . /{Fo^-eyt® ®ord «xanspte}- . .
Why Endian Awareness Is Important
. ► today’s systems 'fire open, interconnected' |g||;
' ■ :
- Application (code| portability
^yEndfahlpeciie eodeishot portable to systems
oftbe opposite
?■ •«« : ^t|fby=^ ; ';;-::Plffeibe^pif^rp^peimmlassumptions If
-byte
^iCNato fill
1 ii:iiii||!ip!!!iii!l!!!ii!i|iiiiip
||il|i . I datp . liti IS si % ail . to a I
reversed BE data Stem
James Gillig 08/01/94 AD04
1^;.
!! -tapsltf i#es’ €5Qi^S'
1| across SE, l£ platforms
-All Endian Neufral
- Recompile & run capable
- No redesign, code rewrite
- No ES parts
r \ Endian
Mo Endian p lipl|IIII
Dependencies f®P***fw 3
, J Program
*■ Endian Specific Program <
may rspuira redesign,
if; :rewrf^;p(#ppfiffe||piSFi|i:;|
oppOsite-Endian platform: : ;
ff f§: Necessary dependencies';
f|p- Unnecessary dependency j
iff (ppii||ppg pifacficef |1
■Emm / mm« \
Specific pPspesCsadBS |
iiiiiiiliiMii
Page 5 of 9
Bicil&n ill %r i *> \..i« j
*4*11
* Handle datacdr tecfiy ;i§||
~ Integer, painter, bitfield, float. instruction, etc,
pri^ about the
byte ; oi*ter pf a i^ata Ram "Hill
IwiHlli® a single, ■ lllllHI
i-llliHIBii
|% Pointers, Casting, Urilon^Bit fields
► Mixed use of data types m shared memory cart
; : ;iiifeiMijiejl»ndent qh' : tiS ! Erillaih »lodSr :: i plll
i|:;: char c; |||
union udata { ||||
: int a; ||§|
charp[4];
III } uvar; ||||
III uvar.a= 0x01020304;
III c= uyar.p(1]; He is 0x02 for BE and 0x03 for LEj Jj
m ije
:«# yAx ftife if|pf.' MSB
pUt.' ;■if\ :. ■?,& | pN^llI
James Gillig 08/01/94 AD04
.^ypaintef. casts can niafoe program .code. f |
if dependent on ih© Endian mode of-execution;
Song a;
short b;
a= 1;
b= ‘(short *)&a; // b=0 for BE and b=1 for LE
BE EE
W&l'/M uss lsb: £-pti$l
iiljiim Bafjpi (Bit Fields)
► A hit Held may he at different locations across platforms,
if Eiidi^nSi Col^gifera-- ptps.;C^
M Pdbiarati|d and
llllp® struct { . \
unsigned a :2 // Two bit field ;i
1;S|:§: unsigned b :1 // One bit field i;
unsigned c :3 // Three bit field;:
unsigned pad :10 // Padding
} bitfields;
bitfields.c = 06; // Set bitfieid.c \
bitfields.b =01; // Set bitfield.b ;i
bitfields.a =02; II Set bitfield.a
*■ Codtetfeat uses is
► Co*te,ti?dt n®a«fiR»*)ti^eSiNsi mask,||i^
§§||>C# tteat ©Tracis Wtflstaswjti atfepend^ocyoit feyt© address fen's fj&ttf at
a b e (bHs)
x; : : V, : '
:4 ► Ai ignment is a general portability concern ||||4|f?4:
vi: ► (Un)Aiigned data may 'be at different ideations SP
:,' iwhieN cm complicate adWrasSKtepvl
aligned and fcE ' Una ilgoedand IE
’C’ I pad | 04 I 03 ! 02 ! 01
02 •: 03 ;i; 04 | 05 | 06 | 07
i ’C' •: 04 ! 03 i 02 01
i 02 i: 03 | 04 I 05 106
ix^iigt ii^daddiife 11
r^i|pid|| 01 I 02 ] 03 | 04 I
I 02 || 03 [ i | 04 j 05 I 06 1 07 | i*
l char *P ; LSB JMft
StrUCt{ * **
char c= ’C; \
integer n= 0x01020304 ; ’SIQ ; &x$
1 1 s; ^ |l
I p++; // ^p points at what? ,',ftp
I lllpclij 01 02 I 03 ! 04 ipi
.'• • V. ••KKi p.;,: • xP.PP- • Sx • • W > : . . :/%V 02 \\ 03 04 05 ‘06
Sftfe: m& n ts&
» Endian Aware Program i \
Si||
;g^Alt#>stiyEndian:Ne«tr#:.
p. - Recompile' 8$iih cilpafcii# |
rediisJg^ <^de.fe«0lfe : ''-
|:||‘:Needed:PS pa^japjatedl
• jni^TO?nSi#; pill
ii i »*• Replaceabte or adaptive i;
;;; Endian ..ccnversidnof’d afe;
oppoaite-Endian data
Endian *
|iill!!l!I
Program
No Endian |
' Dependencies)
^Endlarc p|i
Neutral u 1
Endian
P ^ Specific
:• Parts A
Endian 1
Neutrai;.|:
Program:
EiteEian
Specific
'Pro|lam
James Giilig 08/01/94 AD04
oe i#t#td*
scalar data Item and have a dependency!
on its addressable !$feolder |53fMS§
Pjhahinty Ol Application Code jf : |ij|
&1^ii|jpdtt|rtg source cpde :%^|r :pi|^^|i;|
':: i Isp^crff i«5
fll is other Endian
- Recompile & run
I WheAporlpg ■ liNNMry;<aaictat--.
- Emulate instruction set it target processor is
44 different
III processor Is'other Endian
Page 7 of 9
the .ERdlari: fill;
► A special function can test what is the current
Ertdl@r» mod® of execution
:#define BE 1
Mdefine LE 0
£ char endian (void)
U
short x= 0x0100;
return *((char *)&x); // return 0x01 for BE and 0x00 for LE
!,}.i...
y #define is_big_endian (endian() == BE)
#define 5sjittle_endian (endianQ == LE)
* Any program
James Gillig 08/01/94 AD04
HIMliff Ot DafaWr Portability
To convert data to ether .
Endian type’ |j§J||lf
§||gKno«f are data type &
Mi type for Scalar' |
;J data end elements of |
llt^eS&F^fodafca. (arrays,
struct®, etc.)
- Algorithm: ALE data
item Ps equivalent to a
111 byte-reversed SE data •;
tl Item
Ml/tdifibyte scalar- datahao:
inte^er,lcnQ s etc.;
. : -1 - ields : ;1111||
- Pointers
!§~ Executable: inetirucf Ions/:
t Text end binarystream ’ ..if
Pdatahesne'Endlaneaa ||
. ".PSinqlerfoyte character M
HI baa no
S ~ Unicode has Endianess
® IS010$46 BOWnxFEFP
Page 8 of 9
Handig^ : 1^Cfe|iques
WWake-cod® Endian Nottfral ;|:> 1 ^§i{fetawW>;£fidiaotyp®;
v'lsjalia M ^ ►.■Mee# data in standard It!
: J S|peelflo’' ?t©**d {?#■ aN^p'ISldll
•> Make- coda Endian ► ftssjpfieitij? know the data '
Adaptive r• ■;|f|g:' ; .¥ f*£ ||I§;!I§§tf|£«fy^^
wake code-Endian Aware . : - 4 ®S:Aj|^PSo ; ®®^;,.:
How To Plan For Endian
. Awareness . If'• :; -'||§y;;!:; : ;' ; |KI|p||l||iIlf
* Practice J^jn i ^rograromlng
. .; to ^c?lilis^gi'-.=csod(fi :
>-treat EndSari as att©iherASF*Pt ofll^Kig^
"Mi?** iFiBiP'd#yy< : . i|^^^|^t<pyp. 5 pp:yvyyyy :
j ^O wiij iHMi. toe IfPyyppyvP.:,'.'
•PacfcogiIng ,'hi .:;rtr " ■ . ' ■ iyi|||f|
Iflflffe Iptf yppptT ;•/ y . p y
-Data portability across SW/HW platforms
James Gillig 08/01/94 AD04
j|^gglp|lan;^t Sappgidgt, vi;! p'=•;
iSilSIB^MiKIl^WiSy
|^(3&|iPf»C “.LE/neytral 'fjg
>Taligent Appr Frame worksare : neutral ||
$ DCE RPC data conversion between EptiEylff
r Device Drivers lor bolts BE and LEdevte^yy.'
► PowerPC arcbite&yre Is bi~Endian - ;§t!
jKCompilers support Endian l ; p : . > JSiKliy
► Binary code emulation on opposite-Endian HW
► Endian Awarepess is needed jjf
systems far ^dnwit^ K i|::^i£i|
Endiarts ' J||§
: fcTreatffldlars ; as aedtiier^^lil;
pll^llbping software -I;}-!
». Ertdiap'.Metitrai Design amt
Programming are ways for
|JafidlSn| dala , §j
Page 9 of 9
a echnical Report
How to Create Endian Neutral Software for Portability
James R. Gillig
March 31, 1994
TR54.837
Unclassified
Boca Raton, Florida
Unclassified
How to Create Endian Neutral Software for Portability
James R. Gillig
TR54.837
ABSTRACT
Endian awareness is needed in today's open, interconnected systems for both program code and data
portability. Big-Endian and Little-Endian are two different addressing models of processors. Data, pro¬
grams and processors can be classified as being Big-Endian (BE) or Little-Endian (LE). Data and pro¬
grams that run on a BE processor have a different addressable byte order than on an LE processor.
Because of this byte order difference, program code and data are not automatically portable between
opposite-Endian platforms. Endian Neutral Design and Programming can be used to create more
readily portable software. Endian should be treated as another aspect of portability and cross platform
support when planning and developing software.
Copyright IBM Corporation 1994. All rights reserved.
Unclassified
Content
Introduction . 1
What Endian Is About . 1
System Endianess . 5
Endian Neutral Design . 7
Endian Neutral Programming . 9
Portability Considerations . 15
PowerPC Bi-Endian Capabilities . 18
Distributed Environments And Endian . 20
Planning For Endian . 22
Conclusion . 23
Acknowledgements . 24
References . 25
Appendix: Origins Of Endian . 26
Trademarks Used In This Document
27
Unclassified
Introduction
This paper is about different addressing models of processors, why it is important to software and how
to deal with it in designing and programming for portability. The two prevalent addressing models are
commonly known as Big-Endian and Little-Endian. They become a portability problem for both code
and data when porting software between hardware environments of the opposite Endian. Software
portability includes many considerations and Endian, the focus of this paper, is one of them.
The term Endian comes from Gulliver's Travels by Johnathan Swift - "It is computed that eleven
Thousand Persons have, at several Times, suffered Death rather than submit to break their Eggs at the smaller End.
Many hundred large volumes have been published upon this Controversy." The relevance of this amusing
passage through analogy to different addressing models and software portability becomes apparent with
understanding. You may find the entire passage in the appendix.
At first, Endian may seem confusing to understand since there are different Endian types, different ways
to represent these types, and intertwined considerations for both code and data portability between
opposite-Endian hardware platforms. We will unravel all this by first understanding what Endian is
about, then how to deal with it by Endian Neutral Design and Programming, review data portability
considerations, arid the bi-Endian PowerPC, and follow up with a discussion of planning for Endian
dependencies. Most programming examples in this paper are in the C++ programming language.
What Endian Is About
Endian is essentially an addressing model that affects the byte ordering of both data and instructions
stored in computer memory. Big-Endian is derived from the left-to-right order of writing in western
culture languages and Little-Endian is derived from the right-to-left order of doing arithmetic
operations in hardware processors.
r
Big-Endian (byte addressing)
A+0 A*1 A+2 --> A+n
M
S
B
LI
...
L
S
1 B
A+n
<-
- — A*2
A+1
A-K)
(byte addressing) Little-Endian
. rri ^ rr-i
^ _ J)U
. 7|Tr
The Big-Endian (BE) addressing model assigns or maps the lowest address to the highest-order data
byte (that is, the Most Significant Byte or "leftmost" byte) of a multibyte scalar data item.
The Little-Endian (LE) addressing model assigns or maps the lowest address to the lowest-order data
byte (that is, the Least Significant Byte or "righmost" byte) of a multibyte scalar data item.
1
Unclassified
A multibyte scalar data type such as an integer halfword or word has Endianess (is BE or LE). Its byte
order when compiled for a LE processor is the reverse of the byte order compiled for a BE processor.
The simplest way to think about Endian is that a LE scalar data item is equivalent to a byte-reversed BE
scalar data item. Such a scalar should be treated as a single, indivisable data item although it has more
than one byte and is composed of smaller addressable units of storage. Aggregate data such as a file,
data structure or array are composed of multiple data elements and each element that is a multibyte
scalar has Endianess. A byte value or single-byte character data does not have Endianess because the
smallest addressable unit of memory is one byte and so byte order is not an issue.
Some processors are Little-Endian (Intel**), others are Big-Endian (IBM AS/400, System/370*,
Macintosh**) and some are bi-Endian (PowerPC*, jointly developed by IBM, Motorola and Apple**)
and can run in either BE or LE mode. In turn, the Endianess of software, program code and data, is
determined by the processor for which it is written. Actually, the bi-Endian architecture ofthe PowerPC
was determined by the need to support the large user investment in both LE applications and BE
applications with the same powerful processor and hardware platform.
The data structure example below shows how Endianess can affect addressability and byte order. When
a data structure containing different data types is compiled for a BE processor and again separately for a
Unclassified
Endian maps and forms
The following example is based on the same sample data structure as before but illustrated in the
alternate right-to-left addressing form for LE. The advantage of this form is that the scalar data items
appear in the more (western culture) readable left-to-right order.
f LE Example (Right-to-left address form) j
07
06
05
04
HI
12
02
13
01
14
00
21
22
23
24
25
26
27
28
OF
OE
00
oc
08
OA
09
08
’O’
| 'C*
8 B’
’A’
31
32
33
34
17
j 16
: 15
14
13
12
ii
10
■
51
52
'G'
T
; *E'
V >
IE
ID
1C
IB
1A
19
: 18
61
62
63
64
23
22
21
20
_ J
An Endian model maps addresses to the bytes of a multibyte scalar. There are different ways to illustrate
Endian maps and forms of data for human viewing. For a LE data item, its byte addresses are shown in
either left-to-right order or right-to-left order with its byte values appearing in the opposite order. For a
BE data item, both addresses and bytes are shown in the same left-to-right order. The relationship
between BE and LE mappings and their forms of representation are shown below.
In addition to BE and LE, other related Endian maps and forms may exist as part of a processor's
addressing architecture or its implementation. Some special forms may be internal to a processor,
normally transparent to software, and should not be confused with BE and LE which is visable to
software. Other Endian types of processors may exist but are not common as is BE and LE and so not
covered here. BE, LE are most common but one should not categorically assume that they are the only
addressing models in existence and that all data in the world is only BE or LE.
3
Unclassified
pointer or float. A programmer may write code that treats a scalar as aggregate data by addressing a
specific byte location or byte subfield internal to the scalar. This practice results in code that is not
M.Wliiiil Bil \i Iji
data item is at address 04 for both Endian types; however its two component bytes are at different
Unclassified
System Endianess
The classification of a processor, program or data according to the addressing model it is based on
(usually BE or LE) is its Endian type. A processor or program is said to execute in BE mode or LE
mode. And Endianess means being of a certain Endian type or mode and, more generally, the technical
considerations for executing in different Endian modes and porting program code and data between BE
and LE platforms. Endianess is not limited to any particular component of a system but can occur
wherever data is addressed, retrieved, stored, processed, or transmitted. Endianess is pervasive
throughout a system and manifests itself in different ways as illustrated below.
f Endianess is pervasive throughout a system 1
Applications may be BE/LE
Programmable Endian
controls may exist
LAN^^)
Data interchange may be BE/LE
< -> -.III;: |1
<— - WQ Devices
< - > •$.
Devices/adapters may use BE/LE model
Address model
may be BE/LE
-c
*;Rrocessofi
os
J
A single-Endian processor is architected as either Big-Endian or Little-Endian such as Intel processors
which are LE. Some processors are bi-Endian such as the PowerPC which has the ability to run in
either BE mode, LE mode or both under software control. Bi-Endian capability makes it possible to
migrate existing operating systems, their applications and data from both BE and LE platforms to a
common bi-Endian processor like the PowerPC. The operating system is responsible for handling
Endian specific controls, registers and interrupts that a processor may provide. The section on PowerPC
Bi-Endian Capabilities discusses this in more detail.
A processor has Endianess as a characteristic of its architecture. Therefore any hardware unit such as a
video display, printer, or communications adapter that has an embedded processor takes on its Endianess
as does any software supporting it. The Endianess of input/output data and commands between devices
and adapters attached to a system of the opposite Endian must be taken into consideration. Commands
and data transferred between a device driver and its device can become a problem (i.e. become byte
reversed) when the device driver is running on a LE platform and the attached device and its microcode
are r unn ing in a BE environment. A device driver must account for the Endianess of the processor on
which it runs when implementing a device interface specification. Typically, all related system and
attached hardware from a given manufacturer has the same Endian type.
The user of a stand-alone, single-Endian system with all of its data being of the same Endian encounters
no Endian related problem. If data of another Endian type is imported by LAN, communications, diskette
5
Unclassified
or some other media then software must handle conversion to the correct Endian. Endian conversion
of data requires knowing the data structure, data type, and Endian type. A cross platform application that
runs on different Endian types of platforms needs Endian conversion capability for data interchange
with itself across different platforms. When applications are different, a conversion utility can be written
to convert data files between different applications running on opposite-Endian platforms.
Program source code is compiled into data and executable instructions. The machine executable
instructions of compiled code is essentially data when handled by software when being compiled into
binary code, loading from disk for execution and being managed by the operating system. When being
handled as data by other software, binary program code is subject to the same affects of Endianess as
data and should be treated with the same regard as multibyte scalar data.
Why Endian awareness Is important
Endian awareness is needed in today's open, interconnected systems for program portability and data
interchange across BE and LE platforms.
There are two basic consequences of Endianess:
• Code may not be portable to systems of the opposite Endiaa This is a result of Endian specific
program code that twiddles with the internal bits and bytes of scalar data and assumes an Endian specific
(BE or LE) addressing byte order.
• Data may not be (automatically) interchangeable between systems of the opposite Endian.
This is a result of LE and BE data items (multibyte scalars) being the byte reverse of one another.
How does a developer deal with these issues? Program source code portability can be facilitated by
writing Endian Neutral code that is more readily portable across BE or LE. Data portability is achieved
by conversion of the Endian type when the data's structure, data type and Endian type are known. These
topics are covered in the sections on Endian Neutral Design, Programming and Portability
Considerations.
6
Unclassified
Endian Neutral Design
Software designed and written for Endian portability is said to be Endian Aware or Endian Neutral. It
can be ported to either BE or LE platforms more easily as compared to Endian specific software. It is
recompile-and-run capable. This is for source code portability which requires recompilation to the
instruction set of the target processor. Endian awareness is acheived by the following process:
•Endian Neutral Deagn
•Endian Neutral Programming
A program designed and written so that it depends on Endian specific, low-level properties such as
address and byte order is an Endian-specific program that runs only in BE or LE mode and is not
easily ported to the other Endian. Endian Neutral design is the identification of all necessary Endian
dependencies in a program's design, separating these dependencies out from the rest of the Endian
Neutral design as Endian-specific parts, and isolating them as best possible through interfaces and
conventions.
An Endian-aware program is mostly Endian Neutral but may have well-defined Endian-specific parts.
An Endian-neutral program requires no source code modification and can run in any Endian upon
recompilation to another processor. The Endian Neutral part is realized through Endian Neutral
programming which is the topic of the next section. Any Endian-specific parts will require some
modification for Endianess when porting the program to a processor of the opposite Endian.
The Endian Neutral Design goals for a program are to separate the Endian Neutral and Endian
Specific parts of the design, minimize the size of any necessaty Endian Specific part, and minimize any
necessary modifications for porting to another Endian type ofprocessor.
The benefits of Endian Neutral software include these:
• Increases the opportunity to exploit other platforms with more readily portable software (Recompile-and-run)
• Easier, less costly portability because a program does not require redesign and code ai port time
• Improved design and programming implementation through Endian Neutral Design and Programming
• Full technical understanding of addressing models and Endian issues by development team
7
Unclassified
Three levels of program design and code dependencies that can occur for Endian are:
®LevdOne (1): Necessary dependency, Endian specific (or possibly adaptive) design and code
®LevdTw© (2): Unnecessary, address-dependent bit & byte twiddling within multibyte scalar
• LevdTlira(3): Inadvertent, unintentional and miscellaneous side effects that introduce dependencies
Most code will have no necessary dependency and thus by definition be neutral. However, if a program
must be Endian aware, then the commitment should be to a level one design. Level two occurrences
should be avoided by following the Endian Neutral Programming guidelines covered in the next section.
Level three occurrences may happen in spite of a commitment to level one. For example, different
compilers may internally implement language constructs differently that result in Endian dependent side
effects, or the use of commercial libraries may introduce Endian dependencies, or maintaining
compatibility with existing tools, software or data may introduce other dependencies. One must discover
and learn how to deal with their level three occurrences.
Endian Neutral design and programming should produce only level one dependencies. All or most
program code should be Endian neutral! Endian Neutral code should be the norm for a program and
Endian Specific code (level one) be implemented only as necessary.
Points in a system where level one Endian dependencies can occur include these examples:
® An application may provide Endian conveision for data interchange
• An application may have both a BE version (binary) and LE version based on the same set of source code
• An operating system has the responsibility for managing a processor's Endian related controls if any exist
• Device drivers have the responsibility for handling the input/output interface to a device and any End™
differences between the processor it runs on and the attached device being controlled
• Communications and LAN software have the responsibility for handling Endian differences between
connected systems at the transport control leveL
• Conveision utilities may provide for the end user to import data from an opposite-Endian program
• Compilers for programming languages may provide compiling options to generate different Endian type
code and data.
• Debuggers and dump utilities may provide options for viewing data in different Endian forms
• An instruction set emulator may have to emulate the opposite Endian on a platform
8
Unclassified
Endian Neutral Programming
T his section provides programming guidelines for writing Endian Neutral (EN) program code that is
source code portable between BE and LE processors. The guidelines and examples are based on the
C++ programming language but the principles are the same for any language and apply to portability in
general. EN programming is good programming practice and many of the examples shown here are
contrived to illustrate practices to avoid. More general issues having to do with portability including
program source code, binary code and data portability are further discussed in the section on Portability
Considerations. New program code should be examined for Endian dependencies that may have been
unintentionally introduced during development.
Use a high-level language
Programming language keywords in a language like C++ allow the declaration of data types and
aggregate data and provide for correct data type conversion. Operations such as casting , union and bit
field allow flexibility and optimization for handling data but require Endian awareness by the
programmer to assure the production of EN code. High-level language constructs should be used for
better programming consistency and handling of data.
Assembler language does not offer the high-level constructs and data type checking as does a language
like C++ and is more difficult for architecture neutral programming. Assembly language is machine
architecture specific and not recommended for writing Endian Neutral software. However, using a
high-level language is neither a necessary nor sufficient condition for making software Endian neutral
and, in general, the EN guidelines covered here apply to assembly language programming as well.
Object oriented design and programming can provide a higher degree of neutrality than procedural
programming alone because objects hide data from direct access by pointers from outside the object;
however, the object class and its methods are still responsible for implementing Endian neutrality within
the object's program code.
Use data types correctly
A data type should be treated by executable program code as intended for that type. A scalar integer, for
instance, is treated by the processor as a single data item that is indivisable and represents a numeric
value. The location of bit and byte subfields within a scalar is variant between BE and LE so treat data
according to its data type, length and Endian type. For portability, do not twiddle with the internal bits
and bytes of scalar data while being dependent on their individual byte addresses. EN Practices to
follow are discussed in the next several subsections.
Organize aggregate and scalar data
Program code becomes Endian dependent when a multibyte scalar data item is treated as
aggregate data containing multiple pieces of data across its bytes. Multiple pieces of data should
9
Unclassified
be organized as aggregate data using proper programming language constructs such as a data
structure or data array. The individual members of a structure may be a scalar element or
another aggregate data element with its own members.
The programmer should be cognizant of aggregate data and scalar data when programming and
treat scalars as single, indivisable, non-aggregate data items, and organize scalars as members of
an aggregate data construct when having to deal with multiple pieces of data in a collective
manner.
Avoid pointers to within scalars
Do not point or index to smaller units of storage within the internal byte structure of a scalar.
LE data is byte reversed BE data and so internal byte positions are different. Do not address,
point, or index to a byte, halfword, or word scalar that may exist within a longer data type. For
example, a short integer contains two bytes, an integer contains two short integers and a long
integer contains two integers.
Accessing bytes internal to scalar data through pointers and indexing is an example of a poor
practice as in
long a = 0x01020304;
char c, *p;
p = (char *) &a; // set up pointer to a
c = p[2]; // c is 0x03 in BE mode and 0x02 in LE mode
Multiple byte data elements can be defined as a byte array such as char p[4J which is
independent of Endian.
Avoid overlaying scalars
A data item is said to be overlayed when it has more than one meaning or type.
Examples of overlayed data are:
• Using ashort integer within a long integer
• Using the high order byte of an integer as a flag
• Using a bit field and a binary value in the same integer
• Using a scalar as an array ofbytes
A longer data type should not overlay a shorter data type so integers should not overlay
characters and longer integers should not overlay shorter integers. Overlaying data is not the
same thing as sharing memory for mutually exclusive use by different data types (see the
discussion on union in a later section). Bit fields can be used but not overlayed with other data
(see the discussion on bit field in a later section). Sometimes programmers overlay data to save
storage. Other times it may be done for cleverness when in fact the storage savings is not that
valuable and extra program code may be necessary to get at the desired piece of data.
Unclassified
Avoid making assumptions about data type
In general, the same data should not be used as different data types. Type conversion can
corrupt data and introduce Endian dependencies. Different data types can have different byte
lengths and the same data type may have different lengths on different processors.
Knowing the data type length is important
for portability although independent of byte
order and Endian. The sizeofO function can
be used to determine data type length for a
variable d as in sizeof(d).
Do not use constants for length values as
they may not port to the correct length
values on other platforms. Knowing the
length of character encodings for string
processing is sometimes necessary; and
using the constant 1 for character length is a
common practice with single-byte character encodings which have no Endianess but may cause
processing errors with 16-bit Unicode** characters. (See the latter section on Unicode in
Poitability Considerations).
r \
sizeof(char)
fchar [
Scalar
sizeof (short)
short
Data Types
sizeof(integer)
sizeof(long)
integer
long
=□
!□
sizeof(float)
float
=□
sizeof(doubte)
1_
double
\ J
Be aware of Endianess with casting, union, bit field
C-h- provides programming constructs that programmers should be aware when using because of
possible side effects on data in the same Endian mode or different Endian modes.
Casting forces a data type conversion to another type such as short to long or char to short. Pointer
casts or reference casts allow a program to view a variable of one data type as if it were another type and
so make program code dependent on the Endian mode of execution as in
long a;
short b;
a~ l;
b = ‘♦(short *)&a; // b = 0 for BE and b= 1 for LE
Here the cast to a short pointer results in pointing to different data depending upon whether the
execution mode is BE or LE. More generally, and independent of Endian, do not cast a longer type to a
shorter type because unless it is certain the value fits in the smaller type it can lead to data corruption as
a result of type conversion as in
ini a;
char b;
b = (char) a; // Data loss, but no Endian problem
11
Unclassified
Union allows sharing the same memory by different variables and data types. Do not mix the concurrent
use of different data types in union and do not use it to do type conversion. The actual data currently
stored in union, its actual data type and its referenced data type must be consistent. For example,
char c;
union udata {
int a;
char p [4];
} uvar;
uvar.a = 0x01020304;
c = uvar.pfl]; // c is 0x02 in BE mode and 0x03 in LE mode
Here the array name p should not be used to access data stored with variable a because they are different
types. For example, p[0] will access the most significant byte of integer a in BE mode and the least
significant byte of a in LE mode.
Bit field is a set of adjacent bits that allows efficient and convenient use of memory for implementing a
program's flags, switches, or discretes. As an example of a bit field defined in an integer
struct {
unsigned one : 1 ;
//
one bit field
unsigned two : 2 ;
//
two bit field
unsigned three : 1 ;
//
one bit field
} bitfield;
A program can reference a field by name such as bitfield.fwo. Alternatively, a program can perform its
own bitwise logical operations to select, set and test bit fields but must not depend on byte address and
order otherwise such code will become Endian specific and not portable to an opposite-Endian platform.
Data portability and compiler implementation of bit fields is another issue. Within an integer, fields
may be assigned in left-to-right order by some compilers and right-to-left by others. This presents
additional complications that the programmer must contend with in addition to Endian byte order when
exchanging data across systems. Remember, code and data portability are different albeit related issues.
Avoid alignment complications
Data alignment is a general portability concern and, although independent of Endian, can complicate
assumptions about byte location along with Endian. A data item is said to be aligned when its address is
a multiple of its byte length. Thus a two byte short integer aligns on an address that is a multiple of two.
A four byte long integer aligns on an address that is a multiple of four. An eight byte long integer aligns
on an address that is a multiple of eight. If the architecture requires it, compilers by default will align
data. The same data item when unaligned may be at a different location than when aligned.
Assumptions about alignment, byte location and Endian byte order can become more complex as shown
in the example below where a character (one byte) and integer (two bytes) are shown packed
(unaligned) to possibly save memory bytes. When aligned, a padding byte is inserted by the compiler to
force the integer on a proper even address boundary.
12
Unclassified
char *p;
struct {
char c;
integer n;
} s;
p = (char *) &s.c;
P++; // p points to what byte ?
f
\
Even address f
Odd address
Even address
Char
Unaligned
m
n |
i integer
Aligned
c
P# n j
Pad i
k -
In the above code example, the pointer p ends up pointing to the pad byte if the data is aligned, to the
most significant byte of n if the data is unaligned and BE, and to the least significant byte of n if the data
is unaligned and LE.
In addition to Endian related complications, unaligned data can cause extra work (time) for the
processor and operating system to retrieve the bytes of the data type and reconstruct the data item.
Aligned data provides better processor performance but may use more memory for padding. Aligned
data can sometimes be organized so as to reduce the amount of memory (ovehead) consumed for
padding. For example, pad bytes are added for aligned data as in
struct {
short a; // Two pad bytes between a and b
integer b;
long c;
} s;
and not needed when the same data is organized from longest to shortest data type as in
struct {
long c;
integer b; // No pad bytes
short a;
To reduce padding for aligned data, avoid intermingling different data type lengths and arrange data
from long to short lengths.
The Endian Tes t
An alternative to being more than just neutral is to be adaptive. If a program queries or tests the
processor to decide on the Endian mode of its current execution so as to take a LE processing path or
BE processing path at run time, then the program is said to be Endian adaptive. If the processor does
not provide a means for telling software its Endian mode, then a program test can be improvised as
shown in the next example.
13
Unclassified
An "Endian Test" can be implemented as
#defme BE 1
#defme LE 0
char endian (void)
{
short x = 0x0100;
return *((char *) &x); // return 0x01 for BE and 0x00 for LE
}
and Endian macros can be defined for reuse in a program as
#defme is_big_endian (endianQ = BE)
#defme is_little_endian (endian() = LE)
Endian adaptive code is Endian Neutral in the sense that the same source, without change, can be
recompiled to run in the other Endian mode. Recompilation is necessary for a different processor
instruction set as well as Endian type.
As an example of how to make code neutral with the "Endian Test" consider this earlier example
long a = 0x01020304;
char c, *p;
p = (char *) & a; // set up pointer to a
c = p[2]; // c is 0x03 in BE mode and 0x02 in LE mode
which can be written with the use of the macro as
if 0 s _big_endianjc = p[ 1 ]; else c = p[2]; // c is 0x02 in BE or LE
or even more simply without the macro and independent of byte order, for this particular example, as
c = (a & OxOOFFOOOO)» 16; // reliably yields 0x02 without a test
This example assumes long is four bytes but this is not a safe assumption for portability. An alternate
implementation of this example is to declare long a instead as a character array a[4] in which case a[2]
is the same data 0x02 in either Endian mode as single-byte character data has no Endianess.
The designer/programmer must be careful with an adaptive implementation to make sure it is portable
for BE and LE across the required processors and compilers. A programmer may be able to implement
necessary Endian-specific code with more portable Endian-adaptive code; nevertheless, writing
Endian-neutral code is the first objective to acheiving portable software across different Endian types of
platforms.
14
Unclassified
Portability Considerations
A user of today's open, connected systems needs the capability to interchange data between different
systems. Data can be interchanged through media (diskettes, disk, tape, etc.) and local and wide area
networks of client, server and host communications. Data portability requires the ability to handle
differences between the Endian type of the data being ported and the Endian mode of the system to
which it's being ported. This section covers different aspects of code and data portability related to
Endian.
Endian conversion of data
Data conversion between BE and LE requires knowing the data type, length, and Endian type for all
data elements of an aggreagte data layout to be converted such as a data structure, array, file, or table.
The Endian conversion algorithm between BE and LE is straight forward - reverse the byte order of a
given multibyte scalar data item. A prerequisite for conversion and often the crux of the conversion
problem is knowing the aggregate data layout or organization of the data to be converted. Data is often
only understood by the application that creates it.
Application data
When importing data created or processed by a program running on another platform, the data's Endian
type, as well as other data characteristics, may need to be converted. Typically the receiver or importer
of the data does the conversion and this practice/policy is known as receiver-makes-right.
Data can be readily interchanged between the same application running on different platforms because
an application understands its own data. So a BE version and LE version of the same application
running on two different platforms can exchange and convert data to the correct Endian type of its
resident platform.
To interchange data between different applications, a conversion utility can be written that understands
an application's data and converts it to another application’s data format and Endian type. Data file
formats often become public for popular applications. For example, different versions of a word
processor product that runs on an IBM PS/2 (LE Intel), Macintosh (BE Motorola), and a RISC platform
(bi-Endian PowerPC) may need to import data from another word processor.
A data resource that is self describing can be handled, created, and converted by any program that
understands the public specification of its format and data descriptors. For example, if a piece of data
has associated descriptors for its data type, length, and Endian type, then it can be easily converted.
Data can be kept in a standard form (also known as a canonical form) for easier conversion. For
example, if a program always writes its data as LE, then a program running on a BE platform knows to
convert that data from LE to BE upon reading the data from some magnetic/optical media, network or
communications link.
15
Unclassified
Application code
There are different ways to port a program to run on other processors. The most common way is to
recompile the source code to run on the new processor and another way is to emulate the original binary
code and its non-native processor instruction set on the new processor.
A program can be recompiled to run on the instruction set of a different processor
(recompile-and-run). If the new processor is of the opposite Endian then the source code, unless it's
Endian neutral, will need to have its Endian-specific code modified to run in the new Endian mode
before recompilation. Recompiling an application to another processor produces a new binary verion of
the program that will have to be serviced and supported. A given application may have different binary
versions of it for running on different processors and in different Endian modes. The application's
source code set, any Endian-specific parts, and all binary versions of it will have to be maintained.
Emulation of binary code requires an Instruction Set Emulator or ISE to emulate the original processor's
instruction set and Endian mode on the new (non-native) processor. Compiled, binary code undergoing
emulation is treated as data by the ISE. If the new processor is of the opposite Endian then the ISE,
running in the Endian mode of the new processor, has the additional job of handling the byte reversed
instructions and data of the program being emulated.
A special consideration is a bi-Endian processor. A single binary version of an Endian neutral program
cannot run in both BE mode and LE mode of a bi-Endian processor even though the instruction set is
the same! That's because the address model, and therefore (scalar) byte order is different for both
executable instructions (binary code) and data. The benefit of a bi-Endian processor is that existing LE
and BE applications and their operating systems can be ported to it and still run in their native Endian
mode. An application must be compiled to the Endian of the operating system and processor it will run
on. See the section PowerPC Bi-Endian Capabilities for a better understanding of bi-Endian processors.
Application and system resources
Today's systems are becoming more modular and open with increased sharing and reuse of software
resources. A programmer needs to be aware of the Endian effect on reusable resources and make them
Endian Neutral where possible so they'll be more readily portable. Graphical User Interfaces have
resulted in the proliferation of presentation presentation resources. These include icons, dialogs,
controls, and image bitmaps. Other program resources can include pointers, integers, arrays, structures,
and headers. Resources are created and passed around for reuse in different programs and on different
platforms. Other resources include device drivers, presentation drivers, objects, and server resources,
and files. All these kinds of resources can possibly introduce Endian dependencies, unknowingly, into a
program for which the programmer must be on guard through awareness, inspections, and testing.
Text stream data
A text stream or binary stream is composed of byte data. A byte is the smallest addressable unit of
storage, therefore character data has no Endianess, is neutral and portable. This is for single-byte
character encodings handled by the character data types (signed and unsigned). If the byte stream is not
16
Unclassified
pure character data but includes pointer, integer, and float data then treating it as a byte stream preserves
the same Endianess without introducing erroneous byte order changes.
By creating information as character data and treating it as a byte stream (addressing one byte at a
time) a program can be Endian Neutral and avoid Endian issues. However, treating data one byte at a
time under processor control is not as performance effective as treating data as an aggregate of bytes.
The expression, conversion and handling of non-character data as character data may entail an overhead
in execution time and program code. Consider, for instance, expressing and handling the digits of an
integer as a character array. The advantage of this approach which may be useful in certain situations is
data neutrality and portability.
Unicode and Endian
The Unicode Standard defines a fixed width, uniform text and character encoding scheme. All Unicode
characters are represented as 16-bit values. For example, the hex value 0x0041 represents letter 'A',
0x0020 is the space character and 0x0409 represents the character named "CYRILLIC CAPITAL
LETTER LJE". Unicode values must be treated as single 16-bit unsigned integer values. As with all
other multibyte scalar values, Unicode data stored as binary data in a file, or other interchange media, is
Endian dependent. Data interchange programs must be sensitive to the endianess of the source and
target platforms in order to manage Unicode data correctly.
To help deal with Endian conversion, the Unicode Standard describes an optional technique that can be
used by programs which manipulate Unicode data. The standard defines the value OxFEFF as the
character named "BYTE ORDER MARK" (the BOM). Applications may use this character to explicitly
announce the endianess of the data. The byte-swapped mirror image of the BOM, the value OxFFFE, is
not a defined Unicode character. Therefore, an application expecting the BOM and finding OxFFFE
instead knows that the Unicode data is not in the endian format expected. The application may then
decide to perform byte swapping to convert the Endian type or notify the user to run a conversion
utility.
Unicode was developed by a consortium of companies (The Unicode Consortium) to address the
difficulties of text representation and handling across hardware and software platforms and across
international and lingual boundaries such as English, French and Japanese. The problems are especially
apparent in the representation of Asian languages. Each encoding scheme requires different
programming techniques to correctly manipulate the character data. Unicode has been adopted by the
International Organization for Standardization as codepage ISO 10646 UCS-2. Unicode provides an
unambiguous, fixed width character representation for languages of the world which enables
programmers to manipulate character data without worrying about the encoding scheme and language
being used (i.e., whether it is Japanese text or English text).
General portability issues
There are many portability issues having to do with programming practice and data treatment in addition
to Endian, the focus of this paper. These include, for example, conventions and guidelines for value
ranges of integers and floats, data type length, alignment, calling conventions, executable binary load
module format, ANSI language standards, and others.
17
Unclassified
PowerPC Bi-Endian Capabilities
The PowerPC (PPC) is a RISC (Reduced Instruction Set Computing) processor. PPC is a bi-Endian
architecture that supports both BE and LE addressing models. This section discusses the capabilities and
benefits of the PPC. Reference the PPC 601 User's Manual and PPC Architecture for additional detail.
Bi-Endian modes of operation
The PowerPC architecture is designed to provide the flexibility for hardware and software developers to
choose the Endian mode required when migrating their current operating systems and applications from
other Big-Endian or Little-Endian platforms to the PPC as a common bi-Endian hardware platform. The
following PPC sample program is used to illustrate the address mapping of its 32-bit executable
instructions when running in BE mode and LE mode.
PPC Assembly Language Example
loop:
done:
PPC Example - BE address mapping
cmplwi
r5,0
Byte
Address
00
beq
done
fwzux
r4,r5,r6
08
add
r7,r?,r4
subi
r5,r5,4
10
b
loop
stw
r7,total
18
ioop° cmplwi r5,0
beq
don©
00 01 02 03
04
05
OS
07
fwzux r4 s r5 9 r6
add
r?,r7,r4
08 09 OA OB
oc
OD
OE
OF
subi r5,r5 s 4
D
loop
10 11 12 13
16
17
done: stw r7,total
18 19 1A IB
1C
ID
IE
IF
These examples illustrate how program instructions are like multibyte scalar data and subject to the
byte order effect of Endian.
Each individual PPC machine instruction
occupies an aligned word in storage as a
32-bit integer containing the value for that
instruction. In general, the appearance of
instructions in memory is of no concern to the
programmer. Program code in memory is
inherently either a LE or BE sequence of
instructions even if it is an Endian neutral
implementation of an algorithm.
PPC Example - LE address mapping
beq
done
loop:
cmplwi
r5,0
07
08
05
04
03
02
01
00
■
add
r7,r7,r4
fwzux
r4,r5 s r8
Up
OE
oo
OC
OB
OA
09
08 1
■
b
loop
■
subi
r5,r5,4
17
16
15
m
13
12
101
■
II
IE
ID
1C
IB
m
■a
Unclassified
Endian mode selection
The operating system is responsible for establishing the Endian mode in which processes execute.
Once a mode is selected, all subsequent memory loads and stores will be affected by the memory
addressing model defined for that mode. Byte alignment and performance issues need to be understood
before using an Endian mode for a given application. Alignment interrupts will occur in Little-Endian
mode for the following load and store instructions as described in the PowerPC Architecture reference:
• Fixed-Point Load Instructions (see section 3.3.2 of PowerPC Architecture)
• Fixed-Point Store Instructions (3.3.3)
• Load and Store with Byte Reversal Instructions (3.3.4)
• Fixed-Point Load and Store Multiple Instructions (3.3.5)
• Fixed-Point Move Assist Instructions (3.3.6)
• Storage Synchronization Instructions (3.3.7)
• Floating-Point Load Instructions (4.6.2)
• Floating-Point Store Instructions (4.6.3)
For multiple byte scalar operations, when executing in LE mode, the PPC takes an alignment interrupt
whenever a load or store instruction is issued with a misaligned effective address, regardless of whether
such an access could be handled without causing an interrupt in Big-Endian mode. For code that is
compiled to execute on the PowerPC in LE mode, the compiler should generate as much aligned data
and instructions as possible to minimize the alignment interrupts. Generally, more alignment interrupts
will occur in LE mode than in BE mode. When an alignment interrupt occurs, the operating system
should handle the interrupt by software emulation of the load or store.
Byte reversal instructions
A very powerful feature of the PowerPC architecture is the set of integer load and store instructions with
byte reversal. The distinct benefit is to allow applications to interchange or convert data from one
Endian type to the other without experiencing any performance penalty. These instructions are:
Ihbrx (sthbrx) Load (Store) HalfWord Byte-Reverse Indexed
Iwbrx (stwbrx) Load (Store) Word Byte-Reverse Indexed
These instructions are ideal for emulation programs that handle LE type of instructions and data, such as
the emulation of the Intel instruction set and data. The use of these instructions significantly improves
performance in loading and storing LE type of data while executing PowerPC instructions in BE mode
and emulating the Intel instruction behavior; this happens without encountering the byte alignment and
data conversion overhead found in other architectures lacking these byte reversal instructions. Currently,
access to these instructions is only through the use of assembler language until C compilers step up to
the opportunity to automatically generate the right load and store instructions for this type of data. Until
then, C programs will have to rely on masking and concatenating operations that will generate more
instructions and be lower performing than direct use of these assembler instructions.
19
Unclassified
Distributed Environments and Endian
A distributed application running between client desktops, servers, midframes, and mainframes is
dependent on the communications model and its API (Application Program Interface) for resolving
Endian differences. In a mixed, distributed environment, applications must be able to compensate for
differences in data representation between the systems that participate in the application.
Specific implementations for handling Endian and other conversions exist within applications written to
lower layer communications APIs. Higher level application development models like DCE RPC provide
more general and robust support that isolate applications from these differences.
Communications API
Today, most existing distributed software is written directly to a communications API. Typical
communication interfaces are TCP/IP (Transmission Control Protocol/Intemet Protocol) with a sockets
or streams interface, NetBIOS with its own Network Control Block based interface, or various SNA
(Systems Network Architecture) or OSI (Open System Interconnect model from the International
Standards Organization) interfaces.
Although communications APIs guarantee that data will be transmitted/received between network
nodes, they do not understand the data types being transmitted and cannot convert data or data
attributes, including Endian type, between clients and servers that have dissimilar data representations.
This forces a distributed application to compensate for any differences.
DCE RPC
The Remote Procedure Call (RPC) of the Distributed Computing Environment (DCE) allows an
application to be developed essentially as if it were non-distributed, while providing the support to allow
any of the application's subroutines to be executed on a remote system. The RPC application
development model divides the local (client) and remote (server) parts of a program along an
application's internal procedural interfaces.
Since the remote procdures are application defined, they must be able to support a variety of high-level
language data types. These data types include ini, char, and stinct. RPC hides the fact that data
communications has happened between a client and server subroutine, and one of its functions is to
interpret and convert native data representation differences that may exist between the communicating
systems. These differences include the addressing model (Endianess), alignment rules, character set
encoding, floating-point conventions, and numerical data formats.
Unlike writing directly to a communications API writing to the DCE RPC interface allows a developer
to ignore data representation and Endian conversion. DCE RPC supports a well defined, broad set of
data types that it can convert. They include most scalar and vector types of the C language as well as
some extended types for use in a distributed environment. Examples of the later include a byte data type
to protect data from any conversion and a pipe data type to transfer large blocks of data.
20
Unclassified
Client/server conversion
The RPC data marshalling and unmarshalling routines handle the bulk of the data conversion
responsibility. Marshalling is the process that converts typed data into an encoded, linear buffer suitable
for data communications. Unmarshalling recreates the typed data by interpreting the encoded data in
the buffer. The marshalling/unmarshalling process takes, for example, a struct data type, decomposes it
into its elements, and writes the data and a description of the struct into a single logical buffer.
Unmarshalling rebuilds the struct by reading the data and description contained in the buffer.
For a typical client server call, there are at least two data transfers. One is from client-to-server, the
second is the return flow back from the server-to-client. The RPC subsytem takes the arguments from
the procedural interfaces and assembles them into buffers using the Network Data Representation
(NDR) encoding rules. The buffers constructed by the RPC marshalling routines include the data itself,
as well as descriptors defining the type, size and relative location of the data and its elements. Additional
protocol information is also included, and one of these fields describes the native data representation of
the transmitting system. Embedded in the buffers containing the transmitted data is a variable that
classifies the data as Big- or Little-Endian.
Typical DCE RPC Call/Return Sequence
App
Client
RPC subsys.
Data transfer
; RPC subsys.
App
Server
Cal
serverf)
nAi i
Marshall
to-'
Transmit
_ tefe.
Unmarshall
& convert
Execute
subroutine
return ()
to client
Unmarshall ^_
Transmit
Marshall
continue
& convert
PPT1 IPM *
nmmmmomMmsmmm.
J
The algorithm used to properly decode or unmarshall the data buffers uses the principle of
receiver-makes-right. The receiver determines from the protocol information whether the transmitter's
data representation is the same as its own. If it is the same, no conversion is necessary. If it is not, a
specific, standard conversion routine is called per data type unmarshalled from the received packet(s).
The data can then be presented to the application in the native machine format.
21
Unclassified
Planning For Endian
The rationale or motivation for being Endian Aware are:
Portable data - to allow the interchange of data in open, connected systems and be
unconstrained by Endian type
and
Portable program code - to offer software products that can exploit a larger
hardware base and be unconstrained by Endian type.
Open data interchange and cross platform support can be better accomplished with software products
created with Endian Neutral Design and Programming in mind. Planning for this is not a commitment to
exploit other Endian platforms but prepares one to do so if the opportunity should arise or becomes a
necessity.
Endian is more than just a technical consideration. It is also a product planning consideration from
design and development through packaging and support. Endian Neutral software should be a natural
byproduct feature of the development process. How to create Endian Neutral software should be part of
every developer's understanding and is good design & programming practice.
Planning for Endian should be treated as another aspect of cross platform support, program code and
data portability. Planning for Endian includes these considerations:
• Education - educate the development team about Endian Awareness.
• Endian Neutral Design & Programming - should be part of the development process and implemented
early in the process to keep portability costs down; inspect design and code for being Endian Neutral.
• Tools - compilers, debuggers, linkers, etc. must support different Endian environments.
• Product Test- test process and test cases must account for testing any supported Endian.
• Source Code Maintenance - maintain Endian Specific and Endian Neutral source code.
• Packaging - all processohEndian versions of a program product must be packaged
• Service & Support- all processohEndian versions of a program will require support
• Data Portability - data interchange across platforms, Endian, and applications must be understood and
supported with data conversion capability.
The best strategy when creating new software is to make it Endian Neutral from the beginning.
However, some existing software may be Endian specific and relegated to a single-Endian environment
Although a program's code may not be portable, its data may still have to be portable. Software planned
for cross platform support should be neutral An evolutionary strategy is to make new software Endian
Neutral and make existing software neutral whenever maintenance changes are made to it.
22
Unclassified
Conclusion
When developing software products and programs, create Endian
Neutral software for recompile-and-run program portability to either
Big-Endian (BE) or Little-Endian (LE) processors.
To write Endian Neutral source code, make no programming
assumptions and dependencies on the byte addressing order of multibyte
scalar data; corollary one - do not twiddle with the internal bits and
bytes of a scalar data item while depending on byte order; and corollary
two - do not treat a scalar data item as aggregate (multiple pieces of)
data. If some Endian-specific code is necessary, minimize and isolate
those non-neutral parts for more manageable rewrite-and-replace
capability at porting time.
When importing data from another hardware platform through media,
network, or communications, the data may require conversion to the
other Endian type (BE or LE). Receiver-makes-right is a common
policy. Conversion requires knowing the imported data organization,
data types and Endian types. Endian conversion is done by reversing the
byte order of each multibyte scalar data item to change between BE type
and LE type.
The supporting applications, system software and data for a
single-Endian processor is either BE or LE. The capability of a
bi-Endian processor makes it possible to migrate application code and
data from different BE, LE processors to a common, bi-Endian platform
like the PowerPC and run those applications in their native Endian
mode.
Data's Endian type and the Endian mode required to execute a program
should be treated as additional aspects of cross platform support and
portability when planning and developing applications and systems.
Endian
23
Unclassified
Acknowledgements
The following people were especially helpful in producing this paper.
Art Adkins, IBM, Austin, for his review.
Ken Borgendale, IBM, Boca Raton, for his review.
Norman Cohen, IBM, Hawthorne, for his review.
Ian Holland, IBM, Boca Raton, for his contribution to the section on Unicode.
Roy Ritthaler, IBM, Austin, for his contribution to the section on Distributed Environments.
Tim Shortley, IBM, Boca Raton, for providing the latitude for me to work on this paper.
Rick Simpson, IBM, T.J. Watson Research Center, Yorktown Heights, for his review.
Mark Wieland, IBM Austin, for his contribution to the section on PowerPC and his review.
24
Unclassified
References
Distributed Computing Environment, Understanding the Concepts, ISBN GC09-1478-00
"On Holy War s And A Plea For Peace", USC/ISI paper by Danny Cohen, 1 April 1980
Open Software Foundation, Application Environment Specification, Remote Procedure Call,
ISBN 0-13-043688-7
PowerPC Architecture, First Edition, May 1993, IBM Corporation, (part# 52G7487)
PowerPC 601, RISC Microprocessor User's Manual, 1993, IBM Corp. (part# 52G7484)
PowerPC 601, RISC Microprocessor User's Manual, 1993, Motorola Corp. (pan# MPC601UM/AD)
The Unicode Standard: Worldwide Character Encoding Vol. 1 and 2, Addison-Wesley, ISBN
0-201-56788-1
Unclassified
Appendix: Origins Of Endian
The terms Big-Endian and Little-Endian come from Part 1, Chapter 4, of Jonathan Swift's Gulliver's
Travels. Here is the complete passage, from the edition printed in 1734 by George Faulkner in Dublin.
... our Histories of six Thousand Moons make no Mention of any other
Regions, than the two great Empires of Ulliput and Blefuscu. Which
two mighty Powers have, as I was going to tell you, been engaged in a
most obstinate War for six and thirty Moons past. It began upon the
following Occassion. It is allowed on all Hands, that the primitive Way
of breaking Eggs before we eat them, was upon the larger End: But
his present Majesty's Grand-father, while he was a Boy, going to eat
an Egg, and breaking it according to the ancient Practice, happened
to cut one of his Fingers. Whereupon the Emperor his Father,
published an Edict, commanding all his Subjects, upon great
Penalities, to break the smaller End of their Eggs. The People so
highly resented this Law, that our Histories tell us, there have been
six Rebellions raised on that Account; wherein one Emperor lost his
Life, and another his Crown. These civil Commotions were constantly
fomented by the Monarchs of Blefuscu 4 , and when they were quelled,
the Exiles always fled for Refuge to that Empire. It is computed that
eleven Thousand Persons have, at several Times, suffered Death,
rather than submit to break their Eggs at the smaller End. Many
hundred large Volumes have been published upon this Controversy:
But the Books of the Big-Endians have been long forbidden, and the
whole Party rendered incapable by Law of holding Employments.
During the Course of these Troubles, the Emperors of Blefuscu did
frequently expostulate by their Ambassadors, accusing us of making
a Schism in Religion, by offending against a fundamental Doctrine of
our great Prophet Lustrog, in the fifty-fourth Chapter of the
Brundrecal, (which is their Alcoran.) This, however, is thought to be
a mere Strain upon the text: For the Words are these; That all true
Belivers shall break their Eggs at the convenient End: and which is
the convenient End, seems, in my humble Opinion, to be left to
every Man's Conscience, or at least in the Power of the chief
Magistrate to determine. Now the Big-Endian Exiles have found so
much Credit in the Emperor of Blefuscu's Court; and so much private
Assistance and Encouragement from their Party here at home, that a
bloody War has been carried on between the two Empires for six and
thirty Moons with various Success; during which Time we have lost
Forty Capital Ships, and a much greater Number of smaller Vessels,
together with thirty thousand of our best Seamen and Soldiers; and
the Damage received by the Enemy is reckoned to be somewhat
greater than ours. However, they have now equipped a numerous
Fleet, and are just preparing to make a Descent upon us; and his
Imperial Majesty, placing great Confidence in your Valour and
Strength, hath commanded me to lay this Account of his Affairs
before you.
26
Unclassified
Trademarks Used In This Document
Trademarks and registered trademarks of IBM and other corporations are designated with * and **
respectively upon their first occurrence in the text.
* AS/400 is a registered trademark of IBM Corp.
* IBM is a registered trademark of IBM Corp.
* PowerPC is a trademark of IBM Corp.
* PS/2 is a registered trademark of IBM Corp.
* System/370 is a trademark of IBM Corp.
** Apple is a registered trademark of Apple Computer Inc.
** Intel is a registered trademark of Intel Corp.
** Macintosh is a registered trademark of Apple Computer Inc.
** Motorola is a registered trademark of Motorola, Inc.
** Unicode is a registered trademark of Unicode Inc.
27
ADO 5
Maiilyii Masses*
Rickard Dews
> Cod© utidamlaFtdtn^code compte-jdty
* OBft vs, Windows login flow
. 3rd parly libraries '
* Wrappers v$> Native
* 16 bit vs. 32 tat
e 4731 Differences In Windows i ^ OS/2
.1371 in OS/216 OS/2 32
- Analysts
~ API difficulty
► 000 Mamsttomt mfy
*0iO Utemt replacement
v 020 Replacement with parameter
*■ 030 Change with mem/fees API case
*■ 040 Logic changes required
*- 050 FtmctkmMy does not exist
- Code replacement
« APt Macro / functions .
« Code-assist replacement
* Unsupported features
* Platform specific features:
- Tools
► SMART Analysts
► SMART Port
*- Resource conversion
* Migration Assistance
ADOS
The Harta/Tra® Ersiama
Barry L Bryan
Senior Programmer
IBM Boca Raton
/The Boca Solution
| Logs
j-T races
*> System Dumps
Process Dumps
> Pump Analyzer
. M A ■■ • ••
• • ••• . ' '' '■ •
A puzzle, a mystery!
'Srr or •■ L AB0.JEXE n 111.1 IJ1111I HI I r
igj I A program generated an access violation at 000100aa.
•:•! 'LAB0.EXE 0002:0861 GGaa
gj I P1=0QG00GO0 P2=ffffffff P3=XXXXXXXX P4=XXXXXXXX
g EAX=O0OOc8cf EBX=O0002910 ECX=0000OOdf EDX=0000000O
iji: j ESI=O0O00030 EDI=O00000G0
g j DS=001 f DSACC=60f3 DSL8M=Q0001 aef
g j ES=G017 ESACC=00f3 ESLIM=O00G290f
ijij !FS~150b FSACC“00f3 FSL!M=00Q0Q030
g |gS=0GGO gsa cc=>»»»«
ijii j CS:EIP=000f :000000aa CSACC=G0fb CSLIM=00OO?e71
g J SS:ESP m 0D1 f:OGO014bO SSACC~00f3 SSLIM^OGOGII aef
g EBP=0G0G14d6 FLG=G0O12246
I Options
i •&) End program/comnnand/operatlon
j i;$ Redisplay error message
Postmortem Analysis
K fofoxyaujcff i MiopPB cj ^
^ Logs
► Traces
► Dumps ami Dump Analyzers
mmm
► Logs
► Traces ... "\ .. : .: : , 11(111
► Dumps and Dump Analyzers
SmGG APIS
Miiiiillli lll igl
tOOAOOiNTBSBS ULONOU* PVOfO
liiliil
The Trace Bafitr
jgyesosjoaM] wopsc# mumm wwm&oooj us«$wifo«»j timr^:
MtlwWl
vmmm mm% mmm Mwnpm imi fH >
iwwjwwi m\$m mmm wmwm *«*<„♦
Rwmiww? m m% w$n m mm pm mmwm im • h >
oo oe
pSJ
ev6wt«^i mmm mmm wmwm mmpm *tm<»■>
&nsmww\ itoiosesg wumiooi tmmymvi i«w«^joow8
m) i^ijwwfejfv
*W*«WH| mmnwmm rm<H,
Thh Wywtom>W$ K^lw^^^^SOO
mmmrn pwm mw$m titm&mmwter™
oe oe
Static Trace'
U5H0BT API ENTRY DosSysTrace( ligill
ySH0RT8la|pr* ' r Major code 240*255 Y
USHORT length, /"UogibpfBuffrrY
USHORT Minor, f*mMtewUk*f
PSYTE Butter);
jBBWl Posftriotifarij Analysis ||
rill;; ;j|||
► Traces
► Dumps and Dump Analyzers
■ Dynamic Tracing
Kernel Support
► C0NPI0.$YS$t&tensents for,..
-TRAPDUMP
- DUMPPROCESS
- SOPPRESSPOPUPS
► Kernels Supported ' •
~ OS/2 2.1 OA
-* OS/2 2,1 OASP (Service Pack)
• - OS/2 2,11 p«mufiS»*!iturfna Rofrwh)
~ OS/2 2,1 for WINDOWS
- OS/2 2.1 tor WINDOWS ♦ Service Pack
- OS/2 2,1 "I for WINDOWS ttefreeh)
* oh*, xs l»
« Drive X: maybe diskette or bard file (&rt>rt«io n )
- Automatic re-ipi
«* CREATED# not required for diskette
trafdwp * m , x:
«* System dump by Ctrt*Alt-Numtock*Numlock
for hangs
- System dump automatic for Ring 0 traps*
IPEs
~ System dump automatic for Ring 3 traps '
~ Drive x; may be diskette or bard file {FAT partition}
- -CREATED# not required for diskette
REPLAN | OFF
* Automatic re-tpl
Memory Dumps (cent) IIMIlllilll
HI!
diskette
Process Pomps
>DUMPRROCES$«.3ss lll lillil
~ A file is created on drive jcrfer Rin g $ traps
- Processing continues
PopUpa
► $UPPRg$$POPUPS * XI
~ PopUps are aupprassed
- Wrtg $ trap information written to a tile on
<*«1ve x:
- Propping eotitlrttte*
DosDurapProcesa
IEK>$F<jrc6Sy$i«»ftompiULOI i tG reserved}
Frasentatioa Manager
™.v jp
[Tile VEdit ;.Options: Analyze Help' v / v:/\x/\ :••: •• vv : .
!l- r .:i
:ea*=00GO0e0O ebx=00800014 ecH=800ea087 edx=5e20a087 esi=00000bff edi=00000006 i
;fiip a 00002 /2d eap m OO00Ba68 Bbp a G0OO8a7O iopl^Z -- -- -- nv up ei rig nz na po nc |
cs°d02f as“002f d8=aOB7 es»dl37 fs”150b ga“OOO0 cr2®GO00O0OO cr3»O00OOOGO I
;d02f:G000272d c‘J leave i
: H !'
WDF * Analyse Process
•PMf)F. H:\DUMROATA.001
File Edit Options f" Analyze Help
T i System +
| Process *
Process Info
IptdaT
Thread *
Thread Chain
(TCBs)
Synopses +
Module Table
(MTEs)
Local Descriptors
(LDTs)
Memory Objects
(MOs)
1 !□
PUDF *. Analyze Thread
1 i^MDMl \DUMPf>AT A.001..'* .XX y
File Edit Options
Analyze Help
System 4 [
Process 4- j
Thread ■* j[ Ring 3 l Stack Trace
[ Synopses 4 j King 2 / Stack l race
■ Ring 0 / Stack Trace
j Call Gate
!□:
ft/tous# Button 2
. jRKtflf 'H UMfPf i A.TA .001
File Edit Options Analyze Help
DQSCHLLl 0riSS2R3fcXI IRUDR:
'■ mvwmmgm eeeaaii
:tt Loading version da
Loading structure ini
: . Done.
tt .pH
Slot Pid Ppid Csicj
*0081# 007f 0000 0071
U dOlt : OOOOOZaf DUSCfi
^oujoana.. .....
List Near
UnAssernble
Selector Into
Unwind Stack
Thunk Address
Display Memory
Structures
Chains
0000:dQlf02a7
/MR1
please wait
* SD pPlDR
4 b9c000 7bd63da0
+ UR
pfCH:
7bd2i
PMDF-Svrvoosls
7f '"PMUf- H \flUMPD A l A i«U I . BR9
File Edit Options
Analyze Help j
System 4 :
Process 4
Thread 4
Synopses 4 System Synopsis
: Process Synopsis
: Trap Screen info
Semaphore Analysis
i
i
i
i
i
i
j
Desktop State
J
J
..jllj
--—*- - 1
lillill li WiiiiMlIliiil
fjf, PtMF ::: hAD&lpD AT A.001
File Edit Options Analyze Help
List Near
UnAssernble
Selector Into
Unwind Stack
Thunk Address
Display Memory
TIDDR:
521fdOOOOO jnp 000
ta ... please wait
Fa for OS/2 2.1 SP/HR1
0000:d01f02a7
please wait
[ Structures j ExEntry_s
Chains 4 : memstat_s
rSD pPTDH pTCB
bb9c0G0 tMEgggar7bd2
!j ptda_s
: tCb_S
; vmah_s
1 _WND
: _MQ
r
...... 1.......... .1....................IXj KSEMSHR
L1..X___
| KSEMMTX
..]
----~i KSEMEVT
_j
Adding Help to Your OS/2
Applications
Mic hael Kaply
IPF Ctevelopraefit
Boca. Raton
Creating an IPF File
► legging similar to GMLor
Sookmaster •
*■ Can use tools
- HyperWse
-}PFB(8tor
► compile wito iPFCftom
OS/2 toolkit
- I8F file (standalone}
- HU*rBe{a}>f#fcmtort
tuelp)
sttseiniUxu
MAftlMi
liililiis!!li!!!lil!l
ti;
Help Manager Programming tntertace;
*• 6 Win APIst
- WinCreateHelplnstanoe
■ - WinAssoeiateHeJpirtstence
- WinQueryHelpinstanee
~ WinOastroyHeipInstfmoo
-WinCreateHelpTafcie
- WinLoatIHefpTable
*• 1$ PDF APIs .
► 32 Massages
Enabling Help Wi$iin Your Application
HelpTabtes
» Create help fabie
* Create help menu {if applicable}
»InStiaiiieHEEPINITatmctwe •
* Create help Instance
*• Associate help instance with a window
» Process HMJ* messages
*• Destroy help instance
*■ Can be specified In memory or as a resource
~ liemory
► tielpInltphtHelpTafele % helpTableS/IAIH
- Resource
* helpinibphtHeipTable * OxffifOOCO |
MAIN„H£LPTABtE
*■ Jtffain HelpTable
- Entries for all windows
- General Help
*■Help subtabies : : l!l;i!|l!!!!!!!Hi! 1 lijllli
Hi Entries tor each control IIKIIIIIIIIII
► Provides for context-sensitive help
feiain Help Table He! p SobtabSe i
Resources-
S.eso'u rc«f
mxxumsvmmmM
BM-W
m$m
xomarwis.
m&mawm
EKTJSEli’BJgmBh.
MeittOtF? : ...
Meaio-ty rasfl&aa »&i& hal© takle} t
mumm& =
iEBLra&IiS fcelpSuM'aMe^UJ 0 =
mjmmm, impmm&iimjx,. swjBS&ejram,.
!lll«®l*™illiiill^«lllilllllllllllll
e, mi«, 0
. IDIOTS, ITKSLSEMBiKNEJj,
llii«iiijIIIIII#IiIiillliiIII*llllllll®l||l
ll«lliil«®i«llll®«lll*llllllill»llll
HlliH
Msaao lo^paiMwm eseiiOad
SBOIR III!
svwmm n ~mip"< insole
&e<hk
MSSUI^ “Help “index®, Se.HSbPlMJiEX^
!SIS„SYSGGHHMB>
MSSHTITW “-Inessa kelp", sqjlg^EXTm^O,
WIS^SYSCOJffiWOT
MEROIfBM ““Using faelp“, BELUSISSSEUI*,
Mrsum®
MBROlfEM ““Keys help®, SCjaSEME'S'S,
MIS m S YBCQMMAHD
MOTUIfM SEPARATOR
MK8UITS® ““Etodttcfc i&fOption", I33SLABOUP,
MIS TEXT
► cb
*- uiRetumCode
> pszrfuforiaiName
* pldHefpTable
* bmodHeipTable
hmodAeeeiTabte
idA^ffabie-'
eizeof(HELPINlT)
return value
Pointer to tutorial
name (if applicable)
Pointer to help table
Handle of module
(DLL) containing help
table
Handle of module •
modified action bar DLL :
ID of modified
ilacoeierator table lllllll
a^piHi'r bsipinity
» sizeofi msismm )?
belpinit .txljfeetumCo^e « 0L|
lialpinit .pssTttfcoriall&aift© - MUIiL?
- i?mzm (o*f sztww
t mPL®raM)?
ul t *- &*
ixelp-Ani t* hmo<iAcic«lfe©t i ojxBarMo4ial e “Of
kelpinit^xd^c-cel^abie "■ §$
lielp-init. id&ctionBar ~
X. *p$t » * ? Eteip tw: My \\
h^tpini t »
Ix&lpxnit .pfstBStelptaibraryjKfame « i!i MYA.££
*■ IdActionBar • ID of modified action
* pezWefpWindcwTltle Pointer to heip window
* fShowPanetID ' CM 1 C„H 1 DEJ>ANELJD
CMlCJ>HOWJPANEL„iD
► pazHelpLlbraryName Pointer to namefs) of
lliil|:;:' HLPfiiee ..
Create Help Instance (WioCreateHelptnataece)
*• Inputs:
- HAB - anchor block handle
~ pmmmr - pointer lo HBtPJNIT structure
* Outputs;
- HWttD - handle to help Instance • .
X&B Ixab-j
ID imkmvtpxmtmv*?
mhvxmx h&tpi *iu
tance «
WiKGreat-eH&lpIiistaKO© {h%& r &h©ipiixit) $
Process RML* Messages
* HM„ERROR
«. Process error messages
- mpl * error code
~ mjmmrjmsjmu*
« Return keys help panel
WNLCOMMAND - IDMJJSJNGHELP .
- wtnSendMsg( hwndHelptnstance,
HM^PISPLAYJHEU 3 , Ot, 01 fc
Other message IhlPPOulde and Refeiencte
Associate Help Instance
(WinAssoctateHetptnstanee)
Biiiiaiiiiiiiii
Expanding the Scope of IPF
*- Menage hexes* foul dialog* f Bo dialog
f. Message hox - specified In WinMessageBox
« Fite dialog - D»„FILE„OtALOQ
- Font dialog - OI0 FONT3IALOG
*■ Create empty help table
* Dynamie Date Formatting (DDF)
► Communication objects' ii:'MMr3SWi
~ Appltcation^ntroiled windows (aeviewports)
- Anther-defined pyahbuttona
~ Coverpagecontro!
*• Help for Workplace Shell icons.
* Adding Items to the Master index
Dynamie Data Formatting (DDF)
► IS APIs
*■ Despond to HMJE&JERYJ5DFJ>ATA message
* Generate help text "on the ffy w
*■ Available elements
: :; ; |11
« Colors
- Fonts
- Links
lllilfl
iliiili illlBIII IIBIBBIII ■■ 11 IIII 1
DDF Implementation (.IFF file):
*■ ;#». teg
► Speofftes res 10
► sxs or oy- meeives • -
«KLOUERyjODFJOATA
*-mpi=reslO
* cawr text «»* fee included
|||ilj;p|||||||||lil|llii^l|
>p« !
|s|| i» mt>x& t&xt
DDF Implementation (.C file):
GLOEG nlKesiXD?
I^PE 1 X£$?.?
3$®$£
^witc& ^JBisg) C
case HM_aOERY w DDFJ3&TAt
xn&fixm * wwmpm?i m% U
mm ~ mmuau^{ ox,
switch { tildes Hi) {
case Is
D&fPara ( iiDDF) #
B«f$fe*t ( KPPFr «rni« text was placets lay
III
return {ftBBF)j
Appliealion-Contrgllecl Windows {aovtewpotts)
► Application programmer has complete control
over window
► Provide® away to place P8/tstandard controls in
an 1PP window
*■ Must use :acviewport tag In IPF tile
► Size using vpx, vpy> vpex, vpoy
liSSS 52 *= 11 - SS^^™
objecti3afc« + aiiY into 4 dfc>je«?ti<l* t l 4 '
ypx-ri-pixt vpy^top vpax~£&% vpc^p-itot*
Coverpage Control
Respond to HiajstOTiFY * 0PEN„C0VERPAGE
Coverpage window handle in mpl
Use standard PM calls to manipulate window
switch fiasg) {
bmlwfi???
switch {Brnmimomz t m&n $
ififli;.;',; case o
MnSet^in&cw^ext { £&&&&) h spS, * Custom
Window Title*) i
hraa&r
) /* cM^witch */
} /* endmitch *f
Adding Entries to the Master index
*- Global attribute on index entries
*■ HLP lie must be located In HELP path
1111
- Use sparingly
- Be sure text maltes sense outside of your
application
ih±*k l£ew cnbrF in the Master Index
sil id^newentry gl-ohal^ft. new entry
wmmm^ wnmn
s&tig&E&c#*
WinCreate0b|eot <C) or SysCreateObjeot (Ri
Setup String
- HELPLIBRARY* helpfile
- mipmmi- res id
result - : j 1:1;:!!li-i;; : : ! !:.;;!%|!|I;:;:;;; 1;;:;:l
8^Cg**ta o&i&vti "WPSTogicm***®?
Mm mmm
ra&PrAHEl<wl*J : :;i
iiiiiiiiiiiiiiiii
Trademarks
► OS/2 is a registered trademark of IBM
Corporation
ADOS
OS/2 acd tniernalio^altzaion of
Applioatsofi$
lllllllll! m»Why% II
§§|liillli;:;,:
► Cultural Difference
Th»co*t»
Cost of Unenabled Design ||
- lower at the outset {simpler design)
- Higher after retrofitting
- Function Changes i*e« Sorting etc,
- isolation ot Wi
Cost of Enabled Design
- Higher Initially (complex design)
- Potentially cheaper in the long run
Cultural 'DHterenee*
Whaley i$fhis? :
03/12/94
= ; .' Pate Examples
September 14,1994
Albania
1994-9&44
Btigaeia.
. 1<$44X~I4
FmfaaA
i4i$4994 *
Italy
wwm
"Hettoiaiids
14 1994
IMte# States
mmm
C.nad.uf-rencln
#4-03-14
► -Order of Year, fiHontH and -Bay
► form of Year and Month
► Delimiter
Cultural Differences
Time Formate
► Hour Convention
ill i
► Designations
22:42,00
kl 22.42
22,42,00
22 h 42 1
Ms
BUMIllll
Switzerland
Quebec
Alternate Week endings
Alternate ft/ionte Speoifloations
Weekend
C October lOjlMSSIIlll:
feraai Friday, SafeFday
Islamic
13 Safer 140?
Islam Thursday, Friday
Ha&raw
16 Tishri 6746
iilliillilliSi
Alternate Calendar Formate
WecfThe Rf^kfel 1 SufiWonTu?
mm
ISII
wm
mm
Hi
Wiiii
mm
ll: i
lii
Illl
illl
li
illl
ill
ili
111
illl
ill
11:
ill
lUl
illi
illl
illl
ill
ill
|H!
«
Hi
iHl
: Sm'
mm
mm
Mm
lUi
»&::
wm
mm.
mm
lii
W$M
lllil
mm
mm
£&&
Mij:
ill
iiii
wm
mm
T-tat'
mm
mm
mm
mm
mm
mm
lllil
mm
ilii
Wm
mm
SM
mm
Alternate ERA
Thailand 14 September 2537
{Buddhist ERA 543
80} |
llllll
Heisei 6 September
Taiwan (Emperor AklhNo
1S89)
Numbera Around The World i
Number Formate I
MH of
IMIMgiMMH
-fof ttsmbm-
Decimal Convention
Miliilglll
Example
- Psfetffhfeste* XJQ:
Hyphen-xx
Period
: 1? ,456,54
Illllliliil
H^3b$»XX-
Comma
17,456,54
5,785 .
*&q£fara Brackets- {XX5
ffotthfein# Of mOO*^ MStom fe JiOtofecf fey -oOiittfty few
French .
17 456 r 54
0,783
12&i54 im*&dQW3 tol&MS
White 1-23,4Sr roymfe up to 1 2&M-
j| ' .
17*456,54
0,783
Swrfssrlan^
12337$ t««fKls:to V£M
123J375 Kttifid&tQ t235
123J32S EO«ffds.lQ 32 35
125325 tOuMSr to 3230
Currency Symbols Position of Curroooy Symbols i
m Mar
!^p!|p||!ll!l!llllll?l
Stitssfr Powiet
| American Dollars :
ini^iiiii
iliftiiii!! iiiiii
■■■■■■
• German Itfarks
DM12> 130,25
Gsffnan Mark
lillllMIMilllll
Greek Drachmas
1—
• ■ ■ 3 liii
ilpiilllllillili
French Francs
12 130,25 F .
UfuguayaH Nuevo P«so
Portuguese Escudos
12,130$25 ESC
P’qrtMgw?** Escudo
pe?
Space Required far Monetary Value
IIIBili!!!!!!
CsBE?ad3ssi Dcffer
:illl|i|
zmjmgQ
&#©an Fes© :i:
mtm Uta
IBiPIlllliii
Egyptian Found • :
mi
AdcStforsa! Country Info ARI%
► FrfQueryPrGfBelnt
► PrfQueryPrelileStrlnq
- PM Country Info
-Held In OS2.INI file
- Similar info returned by
DosQueryCtrylnf©
Country Dependent Formatting Info:
► oo*a«wyctfy&rfo
* Returns info from COOMTBY,S¥$
- Cotaflry Code
- Sate tornsat 0 /SM/DO/YY,
- cvrrefwyKMSwtfi#
~ Thousartos Senator
- Cede Separator
-Time Separator
* Cuereito? Formas into
- Time Format
- Bata list Separator
Entry Penele
New Employee Personal Data
mmm
Employee Name
First Name;_
Last Name: ...,,;.....
Salary per monti & ,
Telephone Number
Structuring Culture Specific Services
Different Sorts for dherent Countries:
► Sorting
► Searching
mmm
► Cornering
iliiHlil
► Rounding f j
► folding |
11**111!!!
a b
■■■■
Iglllll^^illl
!Il!«l»III!!»i
IlilBIllllH
lilllliiili*
ill lil llllii i iiii
111111 |
■MMi
things to Consider When Sorting
Entity of A3pfrab$$c -O^^racters
= A= A
4- “3 «£ <Z < “ &“ &
||||||ji§£i||i^^
&<&<$<$<%
A^^B<U>0<c
Sorting
ja&ife ••:::;:
&mmmn
afcBdWrt.. '•
msm
W&Mmim
At*-
-Add
$pectet 0tw@c&rs
•AAfiSWOL^J
Sorting Baaed on Characters Binary
Value
Sorting Baaed on ^chooaolng
SSSS
wmwm
<tbte
XxJr^xcat&oriKcj:;:^
: : A6kkiBi : : ; : : : : :v: ; : : : ; : : :: : : : :
< : : : : : : : : : : : : : :itt«sa : : : : : : : : : : : : : : : : :
ft>ESEty
Aardvate
AardwotT
AMo
am
:• : Alfcx5«
A&m- ■ -.
. • AFfr* " •
Adfve
BODY
m • .
Acdva ‘ "’ : :::
ACTION :
AMMM.
' hczm
m mm
aoosr
y&3&.'&&£:£
imm&m
*am
?Sfea»S^x
:-Aar<fwarfe:-:-: : : ; : : :
Arfioa. * .
iSww: : : : : : : : : : : : : : : :
sm .:• *
$opy.
Bb<tf
/saardyarfcrx^x
mmmmmm
wrnmmmm.
mrovark:
A&fJDVA m
-aattfraric
ghfoym ’
A«h$k«&
pfoctBsshyyrtjroh
*•' MftPWW :
a&haboiio char ader-a of
^m^rnm^mm
..; /fefe !
0^08$$ 2ro
body
- Y: : •
’ hycharactfi^ct
3 <Aw
miB .
' •;; :4&#hW BfcSSv". / • :
mmMmmmmz.
SirfWTf ' :
AcilOft :
ACftHDN
wmmuwm
«c*rart
&stk?rt
mm
jteflwo
: *£&&■
adit ' ••
• • •
wW •
mrn^Mmmm
m&tipmmmm-
B£X>Y
mrnmwim m
• ®3dy
:j;! Examples of Language Sensitive
Functions
► Groaps of tetter* Treated as a Single tetter
(Sp&ftiahjl
- If of llama treated a* a tmique tetter betweer* I
and »t
- ch of ©bfe©treated asa unique tetter between «
|lllllf|fg^
► Single letters Treated as Several Letters {CtermanJ
- Bis treated as "SS"
- els equivalent te"<**“
Folt^ng of Characters
Pahang m the process in which phatabte er dispisyaPte
characters are substituted far these characters feat cannatj
be displayed or printed err a set acted device
i F 'te'* te folded to V and 4 ’&” is folded to “a*
cate (measured)
cate (coast} • aii fabric c«te (quote}
cdte {side)
Un palteier essassteS = An assassinated peflcemsrf
Un peiteter assassins » A paliaarasB assassinates
M Cnxrmt Fsw-ess C-ode ||j|jj§
- Ma.a^ $y$tesa £*t*d£Fa§e
■* S5#E?a Code f*sg$ f$ ypwfBed)
;i IfosS^lFrwe^Cp
w Sifefc Fritter Cfede Fag£
WmKKtKBSKSKm
► teptacs Functions
!l|l;^!l^||^|^^^!j|!|;lll|j!!!!j|!j!ll!ll!llll
* QpsSeiC
► Window Management Functions
■■gPHHIii
- WinSetCp
- WinCpT ranslateString
Code Page Summitry 2 of$
Country
1 Oourtfry &><$&
Hungary
tm
krafctttd
.354 *...*
858 t 861
^lillllllllllll
lilliiiiilll
:
Japan
mt
93£,4£7,850 y £42
Korea
lilliiiiilll
Latin itmerfea
llillilliiil
llllMSillliilli
«ai ! •
850,437
Norway
047
830
Poland
liililllllil
llliiiliiiPlilll
Portugal : /
!l!i!l«li!I
36iG,8$0
Rapubiioof Cldm
lllPillilll!
030,437,850.348
Cibydkia IlfjMIllll
lilliiiiiiil
S5&850
93X iaftd 94X Oftfy supported by OBCS OS/2 versions:
Code Fage Summitry t of $
G&urriry - Ccuo^Gode Supported Ccsfe P^$ss
AraMc Spacing
783- '
09* ,:
437,850
Aost-atfe ’ . § II
liilllii
437,850
Beigatm
iiiiiiii
358,437
Brazil
llilill!
m437‘
Canada* French
iiiiiiii
•wuwsfr
Oaeeftftepubio
iiiiiiii
852,850
Cenmark
•045-
850 • .
Finland .
358
ililiiiiiiiii
liiilllllMgMll
ill 11
«iiiillillli
Germany
liHiilil
iiiiliiiliii
Hebrew Speaking
llilill
Code Page Summitry 3 of 3
Country • Country Code Code Pages Supported:
Spate 034 850*437
Sweden 046 850*437
Switzerland • 041 850,437
Turkey 090 857,850
United Kingdom 044 850*437
United States 001 437*850
Former Yugoslavia 038 852,850
| WmUpp&tGhm
► ^nCcHtnpareSifiiifs
► WlnNextChar
► Wi nSttfostitu teStrlngs
lliill|||ple$^g^ &if *j J|l§|
DostSfetMessage
Based on message number and lie name
|§ Files created by SSK&ISOSF Utility
- Re toms length of message
► MIS • Machine Readable Information
~ Message text* dialog panels, icons etc.
*■ Separation versos Isolation
~ n iil
*• Bun-Hat® binding
► Mfti in country directories
► PH - Program Integrated Information
* Help Flies
~ On-line Documentation
Meted IVte^saQ^ APIte
<► Do^rt^^s^#;'|||||f|l|||I||^llilillllll
► DosPutMessage
«► DosOuerylessage^i
HIBIIIBI
- Nations] Lancpscfa Dependent
Fim^one
► tsafate ssFttssfcfve rmi&ifies
* Msat Mtmtem i& isolate?
B®^!!!!ilR!l!B!IR®!!!!!!l!!IP
lliil^lllllllllllll®iiiPllillilllllli®ll
~ Csarrency Formats
w£ajgn<tar
- Fy&scteS&m
- feswossfng
- ReymStop
- FaMtog
4+ teg* mmernfam
~ $k$gbs?s m& ftteasysss
wSenlem^S$»c^ajs<JPync<uatloti
w $tatft&mitfj£a3 Formats
■illiillliil
► Configuring OS/2
► Command Line
_ CSCSAPI
DosQuery D BCSEnv
- Based on Country and Code Page
Returns DECS Environment vector
• Tafcla containing pairs of ranged
of first byte of a DBCS character
~ Japan mm S0,K3,0#
■Hi
* COUNTRY
► oevittfo
- Specifies screw device and video font
taws
- Specifies keyboard layout 10
Command .line
$$$ and lifer
► CHOP
- Q«@rf or Set Cede Ptgt
- Choose #0(11 Primary and
Secondary Configured
* KEYS
- Query or Set Keyboard layout
- Choose a country
► How
- Developer Ccmo&ctfen
► XPS /4
► Later
~ ULS Support
• * APJ% ter prooessiriQ oi Ontecste data;
> Support tor teonv traootormatiwis
The Integrated Desktop:
Programming to the Workplace
Shell
Cathryn M. Bloomfield
Sheila A. Harnett, Ph.D.
IBM Boca Raton
Ways to Program to the Workplace Shell
► To create a customized desktop configuration
► To integrate your stand-alone application into the
data-centric user interaction model
- data files on desktop can automatically associate
to, and launch your .EXE
* To implement your application as part of WPSH
- Add new classes t© represent the behavioral
aspects of your application (templates, new
settings, unique context menus, special object
and container views, etc)
► To modify the behavior of existing WPSH classes
- class replacement
Special Notices
> The following terms, used in this publication, are trademarks of the IBM
Corporation in the United States and/or other countries:
- IBM
- OS/2
- Win-OS/2
- C Set++
- Presentation Manager
- Workplace Shell
- System Object Model
(c) Copyright IBM Corporation, 1994.
Why Program to the Workplace Shell?
► Inherit functionality
- drag/drop
- context menus
- settings notebooks
► User can interact with your application WPSH
► CUA, Graphical interface for free
► You write less code
Pre-requisiles for WPSH Programming
► PM programming concepts
- Dialogs, controls, containers, window
procedures, etc
► Object-Oriented concepts
- Classes, methods, etc
- SOM development cycle
► WPSH-specific issues
- Implementation conventions
- Method categories and usage
Base Classes
T^Hii^sforage'medl'umldrlhstahces'bf.
descendant object classes
► Save/Restore object state data to/from
persistent form
► Provide unique handles for each and every
object that is stored
► Support a Find behavior that allows previously
stored objects to be located
» Where do the 3 Base WPSH classes store their
objects' persistent data?
WPFileSystem: WPAbstract: WPTransient:
EAs INI file not saved
SOM Object
I
WPObject
WPFiteSystem
_ WPDataFile
1— WPBitmap
— WPIcon
- WPMet
— WP Program File
L- WPCommandFile
- WPPif
— WPPointer
WP Folder
— WP Desktop
_ WP Drives
— WPStartup
WPTemplates
WPAbstract
— WPShredder
- WPDisk
— WP Program
— WPShadow
- WPCIock
- WPCountry
— WP Keyboard
— WPMouse
— WP Palette
— WPColorPalette
— WPFontPalette
WPSchemePalette
— WP Power
— WPSound
— WPSpecialNeeds
— WPSystem
WPT ra ns lent
Extended Attributes
► Applications can add new EAs, but must
preserve existing EAs
► 64K limit on each fife/directory's EAs imposed
by file system
► WPSH uses the following EAs:
.CLASSINFO .ASSOCTABLE
.LONGNAME .SUBJECT
.ICONPOS .COMMENTS
•ICON .KEYPHRASES
.TYPE .HISTORY
Inputs: mouse clicks, key strokes, etc
Outputs: visual feedback on screen
Prsssntatioh Manager
r;:; [:::j : •
WC-COMTAINER, W0f4ff?ECORDCOREs 1
PM messages [ User-dMned::Cofttalner:Vi0WS j pm messages
WPSH r s Dialog and Window |
-ProceddFeS- • •• : : < : i . J
WPSH'^C&rtf ainsr Owner
Subclass Procedure^ . :
». r '
rv.« * Method invocations oaa
PM messages * « PM messages
wpsh&som .]
Runtimes • '• j
~ i l , t + ...
i::i: : DdS:calia: : : H*-►< PMSHAPI "
SOM Class Development
WPSH Implementation Conventions
Use Items
Dormant vs. Awake object states
Handles and OBJECTIDs
instance Data and Class Data
initialization/uninitialization
Method categories for behavior control
Object Sn-Use List
► LINK one for each awakened shadow of the object.
► RECORD one for every container into which the object is
inserted. This enables an object to refresh its
appearance In all containers at once.
► MEMORY one for each block of memory allocated via
wpAIIocMem. Enables WPSH to garbage collect
when object Is freed.
► OPENVIEW one for each open view of the object.
Each is a USEITEM structure followed by type-specific structure
► A WPSH object can exist in two states:
- DORMANT: persistent form of object when It is
stored away on disk
- AWAKENED: object is instantiated as a SOM
object that can have methods invoked upon it
Object Life Cycle
Writing a WPSH Subclass
► Map problem domain to behavior of existing
WPSH class
► Create subclass, providing overrides for
mandatory WPSH behaviors
► Override or create new additional methods to
provide desired behavior
► SOMInitModule or JDLLJnitTerm for your .DLL
► Register your class
► Create instance of class
► Test and iterate
Provide Defaults for Mandatory Behaviors
► wpcIsQueryinstanceFiiter
► wpcisQuerylnstanceType
► wpcisQueryTitle
► wpcisQueryDefaultHelp
► wpcisQuerylconData
(WPDataFiie)
(WPDataFile)
(WPObJect)
(WPObJect)
(WPObJect)
Settings Notebook Customization
► creating ana adding your own semngs pages:
► for each new page, write a DlgProc and create a
_AddXXXXXPage method that calls
_wplnsertSettingsPage with its own PAGEINFO
► override _wpAddSettingsPages:
if (parent_wpAddSettingsPages(s©rraSeIf, bwndNotebook)
&&_AddlV!yN©wPag©1( somSeBf, fowr^d Notebook)
&& _AddMyN©wPag©2(somS©lf, hwmdNotebook))
{
return TRUE ;
}
©Is©
{ /* Bmsert failed */
return FALSE;
}
Settings Notebook Customization (cont'd)
► override _wpcIsQuerySetti ngs PageSize if
your pages are larger than the default
notebook size
► To remove any existing pages:
- override chosen settings page method
(_wpAddObjectGeneralPage, _wpAddObjectWindowPage,
_wpAddFile1 Page, _wpAddFile2Page, _wpAddFile3Page,
_wpAddFileMenuPage, _wpAddFileTypePage,...)
- and simply return
S£TTINGS_PAGE_R£MOVED
- don’t call parent
Context Menu Customization
TTSTOTMi°OTirawr0Wf1TOF!!!WPFfTOrPtjpopiTOf!By
return{ parent_wpFilterPopupMenu(.) & ~ CTXT_xxxx)
- NOTE: Sometimes, what you really mean is to change the
object's style instead
► To add your own items, override
_wpModifyPopupMenu:
call _wplnsertPopupMenultems for each new item, and
then call parent
► For new menu items, override
wpMenultemSelected and
wpMenultemHeipSelected
Saving/Restoring the State of Your Objects
Customizing Setup String Processing
override _wpSaveState to save instance data
that you want to persist
► define unique IDKEYs for each piece of
instance data and calf appropriate
_wpSaveLon g/Strin g/Daia method
override _wpRestoreState to restore your data
► calf appropriate _wpRestoreLong/String/Data
method with each IDKEY for each stored
value
calf parent in both cases
► To add your own "remote-control ability,"
override the_wpSetup method:
- Create your own key^value pairs, using
_wpScanSetu pStri ng to parse
- call parent
► _wpSetup is triggered by WinSetObjeclData and
SysSetObjectData APIs
► _wpS@tup is also called by_wpc!sNew, when an
object is first instantiated
► Differentiate between being called at object
creation time vs. a direct call to _wpSetup
Adding Your own Details to your Class
wpclsQueryDetailslnfo(PCLASSFiELDiNFO *ppCFi,
PULONG pcb)
► returns chain of CLASSFSELD1NF© structures, representing
the type, length and offset of each details field
► call parent, and add your CLASSFIELDSNFO at end of chain
* return sum of your and your parent’s columns
► use wpcIsSnitData to initialize your CLASSRELDIMFO once
wpQueryDetailsData(PVOID ‘ppDetailsData, PULONG pcb)
typedef struct _SAMPLE_DETAILJDATA
{
UlONG uIDafaVaiue;
PSZ pszName;
} SAM PL E_D ET Al L_D ATA;
Set your details data and increment the pointer end of your data block:
((PBYTE) (*ppDetailsData)) += sizeof(SAMPLE_DETAIL_DATA);
Customizing Print Behavior
► Override the_wpPrintObject method
- invoked from context menu, and when object
dropped on Printer
► wpPrintObject starts a new thread to handle
printing, the thread chooses an appropriate
print method based on the type of the file
► _wpPrintPiainTextFile
► _wpPrintMetaFile
► _wpPrintPifFile
► _wpPrintPrinterSpecificFile
► Make sure objects of your class have their
TYPE set correctly (don't forget your templates)
asaaiFKani
drag item information
type del struct _DRAGUEfW f*
drag item 7
HWND hwndltem; P
ULONG ulltemID; P
HSTR hstrType; P
HSTR hstrRMF; f
HSTR hstrContainerName; P
HSTR hstrSourceName; P
HSTR hstrTargetName; P
SHORT cxOffset; P
r
SHORT cy Off set; f
I*
USHORT fsControl; f
USHORT fsSupportedOps; /
} DRAGITEM;
typedef DRAGITEM *PDRAGITEM;
conversation partner 7
identifies item being dragged 7
type of item 7
rendering mechanism and format*/
name of source container 7
name of item at source 7
suggested name of item at dest 7
x offset of the origin of the 7
image from the mouse hotspot 7
y offset of the origin of the 7
image from the mouse hotspot 7
source item control flags 7
' ops supported by source 7
Direct Manipulation (cont’d)
► Sequence of interactions:
Method: Invoked On:
_wpFormatDragltem source
_wpDragOver target
_wpDrop target
If source rendering is necessary, target initiates
_wpRender source
_wpRenderCompl@t@ target
_wpEndConversation source
Drag/Drop Customization
override _wpDrop to perform special
processing on items being dropped
override _wpDragOver to let target accept or
refuse drop
typedef struct J3RAGSNFO P* draginfo 7
{
ULONG cbDraginfo; /* Size of DRAGINFO and DRAGiTEMs 7
USHORT cbDragitem; /* size of DRAGITEM 7
USHORT usOperation; p current drag operation 7
HWND hwndSource; /* window handle of source 7
SHORT xDrop; P* x coordinate of drop position 7
SHORT yDrop; /* y coordinate of drop position 7
USHORT cditem; f* count of DRAGITEMs 7
USHORT usReserved; /* reserved for future use 7
} DRAGINFO;
typedef DRAGINFO *PDRAGINFO;
Drops on Printer Objects
<DRP_OBJECT,DRF_OBJECT>
► results in wpPrintObject being called
<DRM_OS2FSLE,DRF_UNKNOWN>
► results in wpPrintObject being called, unless
source rendering specified
<DRM_PRINT,DRF_UNKNOWN>
► a DM_PRINTOBJECT message will be sent to
pDragltem->hwnd!tem, you should print your
object on the specified printer
* a DMJENDCONVERSATION will be sent to
pDragltem->hwndStem as well
More on Direct Manipulation
Association and File Type Customization
► For drops on Shredder:
- <DRM_D!SCARD s DRF_UNKNOWN>
► a DM_DISCARDOBJECT will be sent to
pDragltem->hwndltem, you should delete
your object, and close your views
► a DMJENDC0NVERSATION will be sent to
pDrag!tem->hwndltem as well
► Sn general, if you want the WPSH to handle your
object, use
- <DRM_OBJECT, DRF_OBJECT>
► Create a WPDataFile subclass for files on which
your application operates:
- Define a file type that your application
understands (e.g. Spreadsheet)
► override _wpclsQuerylnstanceType
- Define a file name filter that your application
deals with (e.g. *.SPD)
> override __wpclsQuery!nstanceFilter
- Give your application's .EXE an
.ASSOCTABLE EA with entries for your file
types and filters that you want to pick up your
association
Managing Your Class's Templates
► To control the creation of templates for your
class:
- override _wpdsCreateDefauItTemplates
- create your templates in your own folder
► give your templates OBJECTSDs so your
de-instali program can remove them easily
- You may want to use
CLSSTYLE_NEVERTEMPLATE during
development
- Make sure you set your .TYPE EA on your
templates
Creating Your own Views
► if you add your own views, make your view
menu item id is the same as your view's id, so
the checkmark on the dropdown open submenu
will be correct
► Override _wpOpen, recognize your special
OPENLxxxx flag
► Make sure you call _wpRegisterView
Use of container control (cont'd)
WPSH and the Container Control
► CUA container control is the primary way of
interacting with Workplace Shell objects
s- All objects with which the user interacts are
simply records that have been inserted into a
contsinsr control
s* Any workplace object can be inserted into any
container control created on the Workplace
process using the wpCnrlnsertObject method
► Only one M1NIRECORDCORE per object is used,
even if the object exists in multiple views
► Since we subclass the container control's
owner, you can only have ONE container
control into which you src insorting objocts por
owner= This means you may have to expand
your window hierarchy.
WPSH Container Owner Subclass Proc
► When an object is inserted into a container via
_wpCnrlnsertObject, we subclass the owner of
the container
- provides support that maps container records
to their WPObject counterparts, and related
behaviors (context menus, drag/drop support)
► When a view is registered, we subclass the
frame
- adds the viewed object's context menu to the
system menu of the view
► assumes that FID_CLIENT is a container and
that the container's owner is a frame window
Categories of Method Support
► Object Allocation and Initialization
► Use Item Management
► Object Information - Setting and Querying
View Management
► Container Interaction
► Drag/Drop Manipulation
► Settings Notebooks
► Context Menus
► Class Default Values
► Class Details - Find/Sort/Include/DetaiSs View
Method Categories for WPObjects
Method Categories (cont'd)
► Save/Restore >
- wpSawelm mediate
- wpSaveDeferred
- wpSave/RestoreState
- wpSave/RestoreLong
- wpSave/RestoreString
- wpSave/RestoreData
► Settings Notebooks ►
- wpAddObjectGeneralPage
- wpAddSettingsPages
- wpinsertSettingsPage
Context Menus
- wpModifyPopupMenu
- wplnsertPopupMenuItem
- wpFiSterPopupMenu
- wpMenuStemSelected
- wpMenuStemHeipSelected
Memory Management
- wpASioeMem
- wpFreeMem
► Object Useltems
- wpAddToObjUseList
- wpB@let@From0bjUs@LJst
- wpFIndUseltem
► Set/Query Object
Information
- wpSet/QueryDefaultHeSp
- wpSet/Queryicon
- wpSet/QuerySconData
- wpSet/QueryStyle
- wpSet/QueryTitle
► View Management
- wpVsewObject
- wpOpen
- wpCIose
- wpRegisterView
- wpSwitchTo
- wpdsQueryDefauitView
Method Categories (cont'd)
Method Categories (cont'd)
► Setup/Cleanup
- wpFree
- wpSnitData
- wpSetup
- wpScanSetupString
- wpSnitData/UnintOata
- wpcisNew
- wpcisInitData/UnmitData
► Direct Manipulation
- wpFormatDragltem
- wpRender
- wpRenderCompiete
- wpDragOver
~ wpDrop
- wpEndConversation
- wpDraggedOverObject
- wpDroppedOnObject
► Details Data Managment
- wpdsQueryDetaiisInfo
- wpQueryDetaiSsData
► Base Class Find Support
- wpdsFindObjectFirst
- wpdsFindObjectNext
- wpcSsFindObjectEnd
► Some Class Methods
- wpclsQueryStyle
- wpcSsQueryScon
- wpcisQuerylconData
- wpcisQueryDefauItHelp
- wpclsQueryTitle
- wpcisQueryObject
- wpdsQueryFolder
WPSH Programming Problem Areas
Workplace Future Directions
► Being addressed in future release of product
- Documentation
- Inaccessibility to objects' settings
- Lack of functionality in current APS
- ModelWiew separation for WPObjects
- Inter-process operability
- PM/WPSH programming support
► User interface usability enhancements
► Access to Workplace objects from other
processes
► More setup strings support
► Additional classes, methods, and APIs
► Better 'remote control' capabilities
► Portable Abstracts
► Workplace Shell on other platforms
► CORBA SDL class specifications
References
> OS/2 Version 2 Technical Compendium
> OS/2 Presentation Manager Programming Ref, Voi II
» OS/2 Developer Magazine
» Client/Server Programming with OS/22.1, 3rd Ed., Orfali
and Harkey
*- ISBN 0-442-01522-4 - OS/2 2.X Notebook, the best of
OS/2 Developer Magazine
- ISBN 0-672-30240-3 - OS/2 2.1 Unleashed, Moskowitz and
Kerr, et. a!., Chapter 5, "Workplace Shell Objects"
► Primer for the OS/2 Workplace Shell Programmer, IBM
Technical Report TR 29.1829, Dan Kehn
► Track-A-Snack: A Workplace Shell Programming
Example, IBM Technical Report TR 29.1820, Robert A.
Stanger, Greg Melahn and L. Judy Oakley
Appendix A: Sample Application
» MYFILE and MYFOLDER classes
► MYFILE:
- adds class details, unique open view, only
droppable on MYFOLDER, adds settings page,
modifies context menu
» MYFOLDER:
- manipulates Use Stems, manages view
handles, performs cleanup prior to first
opening, defaults to details view, allows
concurrent views, accepts drops of MYFILE
objects
Create an Install/Deinstall program
► Sn the object-oriented world of Workplace Shell,
the user should not need to see the application
or a reference to it: create a template of the
associated class instead
► Issue WinRegisterQbjectCSass to register the
associated class with the system
► Use WinCreateObject instead of the PrfXXX apis
that were used to create program groups in
previous releases
Kernel Debugging
► Using a function prefix for your object class
simplifies debugging, since every method in
your class will have that prefix and will NOT be
static
► Use kernel debug command VSF * to catch
traps
Appendix B: Debugging Tips for the WPSH
► Kernel Debugger
- need debug OS2KNRL and =SYM files from
Toolkit
- create your own „SYM files with MAPSYM
► SPMD
- SET RUNWORKPLACE=c:\os2\CMD.EXE, then
to start shell: IPMDPMSHELL.EXE
- break on the loading of your DLL
► somPrintf, PMPRINTF
► message boxes
► offload your application code from WPSH
process
Run-time Representation
I aSS,
/object
Useful CONFIG.SYS Settings
Appendix C: Threads in the Workplace Shell
* PROTSHELL= statement in the file CONFIG.SYS
allows a different PM program to be specified as
the shell process
* SET RESTARTOBJECTS=NO statement
prevents objects from being reopened on boot
► SET SHELLEXCEPTIONHANDLER=OFF will
disable the WPSH trap handler
► Off-load I/O intensive operations to a separate
thread
► Since some methods require a message queue,
your threads should have one:
DosSetExceptionHandSer
Winlnitiaiize
WinCreateMsgQyeye
WinCancelShutdown
..... your processing ....
WinDestroyifyiessageQueue
WinTerminate
DosUnsetException Handier
Multiple Processes and Multiple Threads
► Shelf Process
- Application Starter Thread
- Shutdown Thread
► Workplace Process
- Object Thread
- Lazy Writer Thread
- Sleepy Time Thread
- File System Notification Threads
- Threads that come and go:
► Populate, Asynchronous refresh, Closing
Folders, Handling Copy/Move tasks,
Printing, Finding
Appendix D: WPSH-related Win APIs
► WinCreateObject
► WinQyeryObject
► WanDestroyObject
► WanSetObjectData
► WinRegisterObjectCSass
► WinDeregisterObjectCiass
► WimRepIaceObjectCSass
► WinEnymObjectCiasses
► WinStoreWmdowPos
► WirsRestoreWindowPos
► WinLoadFiieicon
^ WimSetFileicon
► WsnFreelcon
► WinShulldownSystem
Files MYFILEo- 03/22/94 14;26
This file was generated by the SOM Compiler,
Generated using;
SOM incremental update: 2.7
Module Name: MYFILE.C
OS/2 Work Place Shell Sample Program
Copyright (C) 1994 IBM Corporation
DISCLAIMER OF WARRANTIES. The following [enclosed] code is
sample code created by IBM Corporation. This sample code is not
part of any standard or IBM product and is provided to you solely
for the purpose of assisting you in the development of your
applications. The code is provided "AS IS", without
warranty of any kind. IBM shall not be liable for any damages
arising out of your use of the sample code, even if they have been
advised of the possibility of such damages.
Entry Points:
Class Methods:
myfM_clsQueryModuleHandle
myfM_clsQueryDefaultFileText
Overridden Class Methods:
my fM_wpc1sInitData
myfM_wpclsQueryDefaultHelp
my fM_wpc1sQueryDefau11Vi ew
myfM wpclsQueryDetailsInfo
myfM wpclsQuerylconData
myfM_wpclsQueryInstanceFilter
my fM_wpc1sQu eryS ty1e
my fM_wpc1sQuer yT i11e
myfM_wpclsUnInitData
Instance Methods:
myf _AddLastWorkerPage
rayf soundAlarm
myf_queryLastWorker
nryf_setLastWorker
Overridden Instance Methods:
myf_wpAddSettingsPages
myf wpFilterPopupMenu
myf_wpInitData
myf wpMenuItemHelpSelected
nry f _wpMenu 11 emSe lec t ed
myf wpModifyPopupMenu
myf wpOpen
myf_wpQueryDetailsData
myf wpRestoreState
myf wpSaveState
rayf_wpUnInitData
myf wpForraatDragltem
myf wpSetup
Printed on 08/01/94 at 17:02
Page 1
Files MYFILE„c 03/22/94 14;26
Printed on 08/01/94 at 17:02
Page 2
};
y A A A A
A A A A A
A* * * * At A A A *
AAAAAAAA
INSTANCE METHODS SECTION ***
A A A A A A A
A A A A A
***** Do not put any code in this section unless
***** it is an object INSTANCE method
A A A A A
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
tfundef SOM_CurrentClass
#define SOM CurrentClass SOMInstance
METHOD: queryLaatWorker
DESCRIPTION:
Query name of last person to work with myfile
RETURN:
PSZ name of last person to work on file
( ) PRIVATE
(X) PUBLIC
*/
SOM
{
[_Scope PSZ SOMLINK myf_queryLastWorker(MYFILE *somSelf)
MYFILEData *somThis = MYFILEGetData(somSelf);
MYFILEMethodDebug("MYFILE","myf queryLastWorker");
return pszLastWorker;
} /* end rnyf_queryLastWorker */
METHOD: setLastWorker
DESCRIPTION:
Set name of last person to work with myfile
RETURN:
( ) PRIVATE
(X) PUBLIC
*/
SOM
TRUE
FALSE
Scope BOOL
Brake Is on
Brake is off
SOMLINK rayf_satLastWorker(MYFILE *somSelf,
PSZ pszWorkerName)
BOOL rc = FALSE;
MYFILEData *somThis = MYFILEGetData(somSelf);
MYFILEMethodDebug("MYFILE","myf setLastWorker");
if (pszWorkerName)
{
if (_pszLastWorker)
{
_wpFreeMem(somSelf, (PBYTE) pszLastWorker);
_pszLastWorker = _wpAllocMem(somSelf, strlen(pszWorkerName)+1, NULL);
strcpy(_pszLastWorker, pszWorkerName);
rc = TRUE;
}
}
} /
return(rc);
k end myf setLastWorker */
METHOD: soundAlarm
DESCRIPTION:
Sound an alarm
RETURN:
( ) PRIVATE
(X) PUBLIC
TRUE
FALSE
Successful
unsuccessful
*/
SOM_
{
} /
/*
Scope BOOL SOMLINK myf soundAlarm(MYFILE *somSelf)
MYFILEData *soraThis = MYFILEGetData(somSelf);
MYFILEMethodDebug("MYFILE","myf soundAlarm");
DosBeep(100,50);
DosSleep(100) ;
DosBeep(100,50) ;
DosSleep(100);
DosBeep(100,50);
DosSleep(100);
DosBeep(100,50);
DosSleep(100);
DosBeep(100,50);
DosSleep(300) ;
DosBeep(100, 100);
DosSleep(100) ;
DosBeep(100, 100);
return TRUE;
* end myf soundAlarm */
( ) PRIVATE
(X) PUBLIC
METHOD: AddLastWorkerPage
DESCRIPTION:
This method adds the Last Worker page to the settings notebook
RETURN:
ulPageld
HOW TO OVERRIDE:
Unsuccessful
Identifier for the inserted page
*/
SOM
Method should always be overridden in order to replace or remove
the last worker page from an object which is a descendent of myfile.
In most cases, an override of this method will not call the parent.
Scope ULONG SOMLINK myf AddLastWorkerPage(MYFILE *somSelf,
HWND hwndNotebook)
PAGEINFO pageinfo;
MYFILEData *somThis = MYFILEGetData(somSelf);
Files MYFILE.c 03/22/94 14s26
MYFILEMethodDebug ("MYFILE", "myf AddLastWorkerPage");
memset( (PCH)&pageinfo,0,sizeof (PAGEINFO));
pageinfo.cb
pageinfo.hwndPage
pageinfo.usPageStyleFlags =
pageinfo.usPagelnsertFlags =
pageinfo.pfnwp
pageinfo.resid =
pageinfo.dlgid =
pageinfo. pszNarae
pageinfo.pCreateParams =
pageinfo.idDefaultHelpPanel =
pageinfo.pszHelpLibraryName =
return wpInsertSettingsPage(
} /* end myf AddLastWorkerPage(
* OVERRIDE: wpInitData
*
* DESCRIPTION:
sizeof(PAGEINFO);
NULLHANDLE;
BKA_MAJOR;
BKA_FIRST;
LastWorkerDlgProc;
hmod;
IDD_LASTWORKER;
"LastWorker";
somSelf;
I D_HELP_LASTWORKER;
szHelpLibrary;
somSelf, hwndNotebook, fipageinfo );
I */
( ) PRIVATE
(X) PUBLIC
* Initialize our state variables. Allocate any extra memory that
* we might need.
*
*/
SOM Scope void SOMLINK myf wpInitData(MYFILE *somSelf)
{
MYFILEData *somThis = MYFILEGetData(somSelf);
MYFILEMethodDebug("MYFILE","myf_wpInitData");
parent wpInitData(somSelf);
pszLastWorker = (PSZ) wpAllocMem(somSelf, CCHMAXPATH+1, NULL);
if ( pszLastWorker)
{
strcpy(_pszLastWorker / DEFAULT_LASTWORKER);
}
} /* end myf wpInitData() */
/*
*
* OVERRIDE: wpUnlnitData
* DESCRIPTION:
( ) PRIVATE
(X) PUBLIC
* Clear up memory that was allocated on wpInitData.
*/
SOM Scope void SOMLINK myf wpUnlnitData(MYFILE *somSelf)
{
MYFILEData *somThis = MYFILEGetData(somSelf);
MYFILEMethodDebug("MYFILE","myf_wpUnInitData") ;
if ( pszLastWorker)
{
wpFreeMem(somSelf, (PBYTE)_pszLastWorker);
> "
parent wpUnlnitData(somSelf);
} /* end myf wpUnlnitData() */
Printed on 08/01/94 at 17s02
P<
/*
A
* METHOD: wpSaveState ( ) PRIVATE
* (X) PUBLIC
* DESCRIPTION:
A
* Save our state variables (pitch and duration).
A
*/
SOM_Scope BOOL SOMLINK myf_wpSaveState(MYFILE *somSelf)
{
MYFILEData *somThis = MYFILEGetData(somSelf);
MYFILEMethodDebug("MYFILE","myf_wpSaveState");
wpSaveString( somSelf, szMYFILEClassTitle,
IDKEY_LASTWORKER, _pszLastWorker);
return (parent_wpSaveState(somSelf));
} /* end myf_wpSaveState() */
/*
* METHOD: wpRestoreState
A
* DESCRIPTION:
( ) PRIVATE
(X) PUBLIC
Retrieve our saved state variables (pitch and duration).
V
SOM Scope BOOL SOMLINK myf wpRestoreState(MYFILE *somSelf, ULONG ulReserved)
{
ULONG cbString;
MYFILEData *somThis = MYFILEGetData(somSelf);
MYFILEMethodDebug("MYFILE","myf_wpRestoreState");
_wpRestoreString( somSelf, szMYFILEClassTitle,
IDKEY_LASTWORKER, _pszLastWorker, ScbString )?
return (parent_wpRestoreState(somSelf,ulReserved));
} /* myf_wpRestoreState() */
/*
METHOD: wpAddSettingsPages
DESCRIPTION:
( ) PRIVATE
(X) PUBLIC
Add our own settings page to let the user alter the pitch
and duration of the myfile's beep.
*/
SOM Scope BOOL SOMLINK myf wpAddSettingsPages(MYFILE *somSelf, HWND hwndNotebook
)
{
MYFILEData *somThis = MYFILEGetData(somSelf);
MYFILEMethodDebug("MYFILE", "myf_wpAddSettingsPages") ;
if (parent wpAddSettingsPages(somSelf, hwndNotebook)
&& AddLastWorkerPage(somSelf, hwndNotebook))
{
return(TRUE);
}
Files MYFILE.c 03/22/94 14s26
else
{
DQbugBox("myf_wpAddSettingsPages", " Failed to add a settings page.*');
return( FALSE );
>
} /* myf_wpAddSettingsPages() */
/*
* METHOD: wpFilterPopupMenu
* DESCRIPTION:
( ) PRIVATE
(X) PUBLIC
* Filter out any options from the context that don*t apply.
* HOW TO OVERRIDE:
A
* No restrictions.
*/
SOM_Scope ULONG SOMLINK myf_wpFilterPopupMenu(MYFILE *somSelf,
ULONG ulFlags,
HWND hwndCnr,
BOOL fMultiSelect)
{
MYFILEData *somThis = MYFILEGetData(somSelf);
MYFILEMethodDebug("MYFILE", "myf_wpFilterPopupMenu") ;
/*
* This method allows you to filter which menus to include in the
* popup menu. Note: wpclsQueryStyle is overridden to disallow
* linking (creating shadow) as well.
V
return( parentwpFiIterPopupMenu(somSelf,ulFlags,hwndCnr,
fMultiSelect) & ~CTXT_LINK );
} /* end myf_wpFiIterPopupMenu() */
/*
* METHOD: wpModifyPopupMenu
* DESCRIPTION:
( ) PRIVATE
(X) PUBLIC
* Add our extra option to the context menu to sound an alarm
V
SOM Scope BOOL SOMLINK rayf wpModifyPopupMenu(MYFILE *somSelf,
HWND hwndMenu,
HWND hwndCnr,
ULONG iPosition)
{
MYFILEData *somThis = MYFILEGetData(somSelf);
MYF ILEMethodDebug (''MYFILE ", 1 'myf_wpModifyPopupMenu'') ;
/*
* Put in our special "open myfile" submenu item under the "open" 1 menu
*/
_wpInsertPopupMenuIterns( somSelf, hwndMenu, 0,
hmod, ID_OPENMENU, WPMENUID_OPEN);
/*
* insert a "beep horn" menu item at the end of the list.
*/
wpInsertPopupMenuIterns( somSelf, hwndMenu, iPosition,
hmod, ID_ALARMMENU, 0 );
Printed on 08/01/94 at 17:02
return (parent wpModifyPopupMenu(somSelf,hwndMenu,hwndCnr,iPosition));
} /* end myf_wpModifyPopupMenu() */
/*
*
* METHOD: wpMenuItemSelected
*
* DESCRIPTION:
( ) PRIVATE
(X) PUBLIC
* Process input from the extra menu option that we added.
*
*/
SOM Scope BOOL SOMLINK myf_wpMenuItemSelected(MYFILE *somSelf,
~~ HWND hwndFrame,
ULONG Menuld)
{
MYFILEData *somThis = MYFILEGetData(somSelf);
MYFILEMethodDebug("MYFILE","myf_wpMenuIteraSelected");
/* Which of our menu items was selected ?
*/
switch( Menuld )
{
case IDM_OPENMYFILE:
/*
* We could call wpOpen here, but, if the object is already opened,
* the following API determines whether the object should be
* resurfaced, or if multiple views are desired.
*/
_wpViewObject(somSelf, NULLHANDLE, OPEN_MYFILE, 0);
break;
case IDM_SOUNDALARM:
soundAlarm(somSelf);
break;
default:
return parent wpMenuItemSelected(somSelf, hwndFrame, Menuld);
break;
>
return TRUE; /* we processed it */
} /* end myf wpMenuItemSelected() */
/*
* METHOD: wpMenuItemHelpSelected
*
* DESCRIPTION:
( ) PRIVATE
(X) PUBLIC
Process input from the extra menu option that we added.
SOM Scope BOOL SOMLINK myf wpMenuItemHelpSelected(MYFILE *somSelf,
ULONG Menuld)
{
MYFILEData *somThis = MYFILEGetData(somSelf);
MYFILEMethodDebug( "MYFILE", "myf_wpMenuItemHelpSelected");
/* Which of our menu items was selected ?
V
switch( Menuld )
{
case IDM SOUNDALARM:
Pile: MYPILE.c 03/22/94 14226
Printed on 08/01/94 at 17s02
Page 5
*/
SQM_Scope HWND SOMLINK myf_wpOpen(MYFILE *somSelf,
HWND hwndCnr,
ULONG ulView,
ULONG param)
{
MYFILEData *somThis = MYFILEGetData(somSelf);
MYFILEMethodDebug("MYFILE”,"myf_wpOpen");
switch (ulView)
{
case OPEN_MYFILE;
/*
* Create a basic Frame and Client window for this instance.
*/
return MYFILEInit(somSelf);
default:
return parent_wpOpen(somSelf ,hwndCnr,ulView,parara);
} /* end switch (ulView) */
} /* end myf_wpOpen() */
/*
A
* METHOD: wpSetup
*
* DESCRIPTION:
( ) PRIVATE
(X) PUBLIC
Specify Setup strings and do some initialization. This method is
invoked once an object is completely created.
* Note: We're overriding this method to write some default data to the
* object’s real filename. This will give us something to look at
* if the user drag/drops us on an editor or selects the open/editor
* view.
*/
SOM Scope BOOL SOMLINK rayf wpSetup(MYFILE *somSelf,
PSZ pszSetupString)
{
ULONG cbBytesWritten; /* pointer to variable receiving byte count */
APIRET rc;
BOOL fSuccess;
HFILE hf; /* pointer to variable for file handle */
ULONG ulAction; /* pointer to variable for action taken */
CHAR szObjectFilename[CCHMAXPATH]; /* buffer for wpQueryRealName() */
ULONG cb = sizeof(szObjectFilename);
PSZ pszDefaultText;
BOOL rcParentCall;
CHAR szValue [CCHMAXPATH+1] ;
ULONG cbBuffer;
MYFILEData *somThis = MYFILEGetData(somSelf);
MYFILEMethodDebug(''MYFILE”,”myf_wpSetup”) ;
/*
* When the object is created from scratch, put some default
* text into the file on the hard disk
*/
fSuccess =
wpQueryRealName( /* query full-pathname of object's file */
somSelf, /* pointer to this object */
Fils; MYFXLE.c 03/22/94 14s26
szObjectFi1ename,
&cb,
TRUE);
/* return buffer */
/* sizeof buffer */
/* request fully qualified pathname? */
if (fSuccess)
{
rc =
DosOpen(szObjectFilenarae, &hf, fiulAction,
0, /* file size if created or truncated */
FILE NORMAL, /* file attribute */
FILE_OPEN /* action taken if file exists/does not exist */
| FILE_CREATE,
OPEN ACCESS READWRITE /* open mode of file */
|~OPEN_SHARE_DENYNONE,
NULL); /* pointer to structure for extended attributes */
if (rc)
{
CHAR ach[10];
_ltoa(rc, ach, 10);
DebugBox("nryf_wpSetup:DosOpen failed rc =", ach);
}
else
{
pszDefaultText = _clsQueryDefaultFileText(_MYFILE);
DosWrite(hf, pszDefaultText, strlen(pszDefaultText), ficbBytesWritten);
DosClose(hf);
}
} /* end if (fSuccess) */
rcParentCall = parent_wpSetup(somSelf,pszSetupString);
cbBuffer = CCHMAXPATH;
if ( _wpScanSetupString( somSelf, pszSetupString,"SOUND",
szValue,&cbBuffer) )
{
if ((szValue[0] == 'Y') && (szValue[l] == «E') && (szValue[2] == »S'))
{
_soundAlarm(somSelf);
}
return rcParentCall;
} /* end rayf_wpSetup() */
/*
* METHODS wpFormatDragltera
*
* DESCRIPTION:
( ) PRIVATE
(X) PUBLIC
* Specify a unique RMF that will only be understood by instances
* of class MYFOLDER. (see _wpDragOver and _wpDrop overrides in
* rayfolder.c).
V
SOM_Scope BOOL SOMLINK myf_wpFormatDragItem(MYFILE *somSelf,
PDRAGITEM pdrgltem)
{
/* MYFILEData *somThis = MYFILEGetData(somSelf); */
MYFILEMethodDebugC'MYFILE","myf wpFormatDragltem”);
parent_wpFormatDragItera(somSelf,pdrgltem);
/* We do NOT want to really let the workplace shell render
Printed on 08/01/94 at 17s02
Pi
6
age
* our object, so change the rendering mechanism and format
* to be uniquely ours.
*/
DrgDeleteStrHandle(pdrgltem->hstrRMF);
pdrgltem->hstrRMF = DrgAddStrHandle(”<DRM_OUROWNSPECIAL,DRF_OBJECT> u );
return TRUE;
>
/************************** CLASS METHODS SECTION **************
*****
***** Do not put any code in this section unless
***** it is an object CLASS method
******************************************************************
#undef SOM CurrentClass
#define SOM CurrentClass SOMMeta
**********
*****
*****
*****
********* j
/*
*
* METHOD: clsQueryModuleHandle
* DESCRIPTION:
( ) PRIVATE
(X) PUBLIC
* This method returns the module handle of this class. If this is the
* first invocation, DosQueryModuleHandle is called to save the handle
* for future invocations.
*
* RETURN:
0 Unsuccessful
non-zero module handle
*/
SQM_Scope HMODULE SOMLINK myfM clsQueryModuleHandle(M MYFILE *somSelf)
{
APIRET rc;
/* M_MYFILEData *somThis = M_MYFILEGetData(somSelf); */
M_MYFILEMethodDebug( ,, M_MYFILE ,, / ’'myfM^clsQueryModuleHandle”);
/*
* Make sure we already have module handle
*/
if (hmod == NULLHANDLE)
{
zString zsPathName;
/*
* Retrieve registered pathname of our module (DLL) and query the
* module handle.
*/
zsPathName =
somLocateClassFile( SOMClassMgrObject, SOM IdFromString("MYFILE"),
MYFILE_MajorVersion, MYFILE_MinorV
ersion);
rc =
DosQueryModuleHandle( zsPathName, &hmod);
if (rc)
DebugBox("rayfM wpclsInitData", "Failed to load module");
return;
>
Files MYFILE.c 03/22/94 14s26
} /* end if (hmod == NULLHANDLE) */
return (hmod);
} /* end myfM clsQueryModuleHandle() */
Printed on 08/01/94 at 17;02
Pi
* Initalize the class data
*/
SOM Scope void SOMLINK myfM_wpclsInitData(M_MYFILE *somSelf)
{
ULONG rc, i;
PCLASSFIELDINFO pCFI;
/* M MYFILEData *somThis = M_MYFILEGetData(somSelf); */
M MYFILEMethodDebug( , 'M_MYFILE'\"myfM_wpclsInitData") ;
/*
* Call the parent class method first
*/
parent wpclsInitData(somSelf);
/*
* Get class title
*/
if (!WinLoadString(WinQueryAnchorBlock(HWNDJDESKTOP), _clsQueryModuleHandle(
somSelf), IDJTITLE,
sizeof(szMYFILEClassTitle), szMYFILEClassTitle))
/* Load string failed: use the parent's string */
strcpy(szMYFILEClassTitle, parent_wpclsQueryTitie(somSelf));
/*
* Initialize everything needed for the CLASSFIELDINFO structures
* for the MYFILE object class
*/
for (i=0, pCFI=fieldinfo; i < NUM_MYFILE_FIELDS; i++, pCFI++)
{
memset((PCH) pCFI, 0, sizeof(CLASSFIELDINFO)); /* zero's */
pCFI->cb = sizeof(CLASSFIELDINFO);
pCFI->fIData = CFA_RIGHT | CFA_SEPARATOR | CFA_FIREADONLY;
pCFI->fITitle = CFA_CENTER I CFA_SEPARATOR | CFA_HORZSEPARATOR |
CFA~STRING | CFA_FITITLEREADONLY;
pCFI->pNextFieldInfo = pCFI + 1; /* point to next CLASSFIELDINFO */
pCFI->pTi11eD at a = (PVOID) apszMYFILEColTitles[i];
pCFI->flCompare = COMPARE_SUPPORTED | SORTBY_SUPPORTED;
switch (i)
{
case INDEX_LASTWORKER:
pCFI-> flData
pCFI->offFieldData
orker));
pCFI->ulLenFieldData
pCFI->DefaultComparison
break;
} /* end switch(i) */
} /* end for (i=0, pCFI=fieldinfo; i < NUM_MYFILE_FIELDS; i++, pCFI++) */
fieldinfo[NUM MYFILE_FIELDS-1].pNextFieldlnfo = NULL;/* terminate linked list
*/
} /* end myfM wpclsInitData() */
/*
= CFA_STRING;
= (ULONG)(FIELDOFFSET(MYFILEDETAILS,pszLastW
= sizeof(PSZ);
= CMP EQUAL;
METHOD: wpclsUnlnitData
( ) PRIVATE
Files MYFILE.c 03/22/94 14s26
* (X) PUBLIC
* DESCRIPTION s
*
* Free any class data
ft
*/
SOM_Scope void SOMLINK rayfM wpclsUnInitData(M MYFILE *somSelf)
{
M_MYFILEMethodDebug( "M_MYFILE", "myfM_wpclsUnInitData") ;
parent_wpclsUnInitData(somSelf);
> /* end rayfM_wpclsUnInitData() */
/*
* METHOD: wpclsOueryTitle
*
* DESCRIPTION:
* Return the string "New Myfile".
( ) PRIVATE
(X) PUBLIC
*/
SOM_Scope PSZ SOMLINK myfM_wpclsQueryTitle(M MYFILE *somSelf)
{
/* M_MYFILEData *soraThis = M_MYFILEGetData(somSelf); */
M_MYFILEMethodDebug("M MYFILE","rayfM wpclsQueryTitle");
/*
* Return the class title for a myfile
*/
if (*szMYFILEClassTitle )
return( szMYFILEClassTitle );
else
return( parentwpclsQueryTitle(somSelf));
} /* end myfM_wpclsQueryTitle() */
/*
*
* METHOD: wpclsQuerylconDdata
* DESCRIPTION:
( ) PRIVATE
(X) PUBLIC
* Return the class icon
*
*/
SOM_Scope ULONG SOMLINK rayfM_wpclsQueryIconData(M MYFILE *somSelf,
PICONINFO plconlnfo)
APIRET rc;
M_MYFILEMethodDebug("M MYFILE" / "myfM wpclsQuerylconData");
if (plconlnfo)
{
/*
* fill in icon information
*/
pIconInfo->fFormat = ICONJRESOURCE;
pIconInfo->hmod= _clsQueryModuleHandle(somSelf);
pIconInfo->resid= ID_ICON;
return (sizeof(ICONINFO));
Printed on 08/01/94 at 17s02
Pi
8
/* end myfM_wpclsQueryIconData() */
METHOD: wpclsQueryDefaultHelp
DESCRIPTION:
( ) PRIVATE
(X) PUBLIC
Process input from the extra menu option that we added.
_Scope BOOL SOMLINK myfM_wpclsQueryDefaultHelp(M_MYFILE *somSelf,
PULONG pHelpPanelld,
PSZ pszHelpLibrary)
M_MYFILEData *somThis = M_MYFILEGetData(somSelf); */
M_MYFILEMethodDebug("M MYFILE","myfM wpclsQueryDefaultHelp");
if (pHelpPanelld)
*pHelpPanelId = ID_HELP_DEFAULT;
if (pszHelpLibrary)
strcpy(pszHelpLibrary, szHelpLibrary);
/* set default help panel id */
/* copy help filename */
return (TRUE);
/* end myfM_wpclsQueryDefaultHelp() */
METHOD: wpclsQueryDefaultView
DESCRIPTION:
( ) PRIVATE
(X) PUBLIC
Returns the default view for a new instance of this object.
Tell the system what our default open view is...
_Scope ULONG SOMLINK myfM_wpclsQueryDefaultView(M MYFILE *somSelf)
M_MYFILEData *somThis = M_MYFILEGetData(somSelf); */
M_MYFILEMethodDebug("M_MYFILE","rayfM_wpclsQueryDefaultView");
return OPEN_MYFILE;
/* end rayfM wpclsQueryDefaultView() */
METHOD: wpclsQueryDetailsInfo
DESCRIPTION:
( ) PRIVATE
(X) PUBLIC
Appends the myfile specific chain of FIELDINFO structures describing the
details data of this object to *ppClassFieldInfo (if ppClassFieldlnfo
is NON-NULL). In this case it also sets *ppClassFieldInfo to the
head of the linked list.
Adds the number of bytes required by the details data for myfile to *pSize
(if pSize is NON-NULL).
* REMARKS:
Files MYFILEoC 03/22/94 14s26
* Add details data for this object„
A
*/
SOM Scope ULONG SOMLINK myfM wpclsQueryDetailsInfo(M_MYFILE *som3elf,
PCLASSFIELDINFO *ppClassFieldInfo,
PULONG pSize)
{
ULONG cParentColumns;
PCLASSFIELDINFO pCFI;
ULONG i;
/* M MYFILEData *soniThis = M_MYFILEGetData(somSelf); */
M MYFILEMethodDebug ("M_MYFILE", "myfM_wpclsQueryDetailsInfo");
/*
* Always call the parent method first to retrieve number of details
* columns and parent's data already defined in details buffer.
cParentColumns =
parent wpclsQueryDetailsInfo(somSelf, ppClassFieldlnfo, pSize);
/*
* If pSize is non-NULL, we must add the size of our deatils column
* data structure.
*/
if (pSize)
*pSize += sizeof(MYFILEDETAILS); /* adjust size
*/
/*
* If the request was for the chained fieldinfo structures
* (ppClassFieldlnfo is non-NULL), link them in
*
* eventually the chain will look like
*
* Grandad - Dad - Me - Kid - Grandkid
*
* I will be getting the pointer to the beginning of the chain
* If the beginning of the chain is 0, I will assign the address
* of my first CLASSFIELDINFO structure to *ppClassFieldInfo.
* Otherwise *pp points to the first column description in the
* chain. We need to walk the chain and link our CLASSFIELDINFO
* structures at the end.
*/
if (ppClassFieldlnfo)
{
/*
* Find the last link in the chain; Then link our CLASSFIELDINFO
* structures to the chain.
V
if (^ppClassFieldlnfo)
{
pCFI = ^ppClassFieldlnfo;
for (i=0;i<cParentColumns;i++)
pCFI = (pCFI->pNextFieldInfo) ? pCFI->pNextFieldInfo : pCFI;
pCFI->pNextFieldInfo = fieldinfo;
>
else
ppClassFieldlnfo = fieldinfo;
Printed on 08/01/94 at 17;02 P i
)
return ((ULONG) (cParentColumns + NUM_MYFILE_FIELDS));
} /* end myfM_wpclsQueryDetailsInfo() */
/*
A
* METHOD; wpclsQuerylnstanceFilter ( ) PRIVATE
* (X) PUBLIC
* DESCRIPTION;
* The wpclsQuerylnstanceFilter method is called to allow the class
* object to specify the file title filters for instances of its
* class.
A
* REMARKS;
*
* A pointer to a string containing file title filter(s). This
* string can contain several file title filters separated by a
* comma. Example: "*.TXT, *.DOC"
"k
* Note: Overriding this method will cause any data file with the extension
* ".txt" to become a data object of the class "MYFILE."
V
SOM Scope PSZ SOMLINK myfM wpclsQuerylnstanceFilter(M_MYFILE *somSelf)
{
/* M_MYFILEData *somThis = M_MYFILEGetData(somSelf); */
M MYFILEMethodDebug( , 'M_MYFILE ,, ,"myfM_wpclsQueryInstanceFilter");
return (szMYFILEInstanceFilter);
}
/aaaaaaaaaaaaaaaaaaaaaaaaaa ORDINARY CODE SECTION *********************** aa aa
AAAAA A A A A A
***** Any non-method code should go here. aaaaa
AAAAA AAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA^/
#undef SOM CurrentClass
/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
A A
* ROUTINE: MYFILEInit ( ) *
A A
* DESCRIPTION: MYFILE Initialization *
A A
* RETURNS: Handle of rayfile frame window, NULL if error *
rt *
***************************************************************************/
HWND MYFILEInit (MYFILE* somSelf)
{
HAB hab; /* PM anchor block handle */
HWND hwndFrame = NULLHANDLE; /* Frame window handle */
HWND hwndClient = NULLHANDLE;
PWINDOWDATA pWindowData;
BOOL fSuccess;
SWCNTRL swcEntry; /* Switch Entry */
FRAMECDATA flFrameCtlData; /* Frame Ctl Data */
hab = WinQueryAnchorBlock(HWND_DESKTOP);
if ( IWinRegisterClass( hab , szMYFILEWindowClass, (PFNWP)MYFILEWndProc ,
CS_SIZEREDRAW | CS_SYNCPAINT, sizeof(pWindowData)))
{
DebugBox("MYFILEInit", "Failure in WinRegisterClass");
Piles MYFILE.e 03/22/94 14:26
return NULLHANDLE ;
}
/*
* Allocate some instance specific data in Window words of Frame window.
* This will ensure our window procedure can use this object’s methods
* (our window proc isn't passed a * somSelf pointer).
*/
pWindowData = (PWINDOWDATA) _wpAllocMem(somSelf, sizeof(*pWindowData), NULL)
if (!pWindowData)
{
DebugBox("MYFILEInit”, "wpAllocMem failed to allocate pWindowData”);
return NULLHANDLE;
}
memset((PVOID) pWindowData, 0, sizeof(*pWindowData));
pWindowData->cb = sizeof(*pWindowData); /* first field = size */
pWindowData->somSelf = somSelf;
/* Create a frame window
*/
flFraraeCtlData.cb = sizeof( flFrameCtlData );
flFrameCtlData.flCreateFlags = FCF_SIZEBORDER | FCF_TITLEBAR | FCF SYSMENU |
FCF_MINMAX ;
flFrameCtlData.hmodResources = hmod;
flFrameCtlData.idResources = ID ICON;
hwndFrame - /* create frame window */
WinCreateWindow(
HWND_DESKTOP, /* parent-window handle */
WC_FRAME, /* pointer to registered class name */
_wpQueryTitle(somSelf), /* pointer to window text */
0, /* window style */
0, 0, 0, 0, /* position of window */
NULLHANDLE, /* owner-window handle */
HWND_TOP, /* handle to sibling window */
(USHORT) ID_FRAME, /* window identifier */
(PVOID) £flFrameCtlData, /* pointer to buffer */
NULL); ; /* pointer to structure with pres, params. */
if (!hwndFrame)
{
DebugBox(’’MYFILEInit”, ’’Failure in WinCreateWindow”);
return NULLHANDLE;
}
hwndClient = /* use WinCreateWindow so we can pass pres params */
WinCreateWindow(
hwndFrame, /* parent-window handle */
szMYFILEWindowClass, /* pointer to registered class name */
NULL, /* pointer to window text */
0, /* window style */
0, 0, 0, 0, /* position of window */
hwndFrame, /* owner-window handle */
HWND_T0P, /* handle to sibling window */
(USHORT)FID_CLIENT, /* window identifier */
pWindowData, /* pointer to buffer */
NULL); /* pointer to structure with pres, params. */
if (IhwndClient)
{
WinDestroyWindow(hwndFrame);
return NULLHANDLE;
WinSendMsg(hwndFrame,WM_SETICON,MPFRQMP(^wpQueryIcon(somSelf)),NULL);
WinSetWindowText(WinWindowFromID(hwndFrame,
(USHORT)FIDJTITLEBAR),
wpQueryTitle(somSelf));
* Restore the Window Position
*/
fSuccess = WinRestoreWindowPos( szMYFILEClassTitle, /* class title */
wpQueryTitie(somSelf), /* object title */
hwndFrame);
if (!fSuccess)
{
SWP swp;
/* Get the dimensions and the shell’s suggested
* location for the window
*/
WinQueryTaskSizePos(hab,0,£ swp);
/* Set the frame window position
*/
swp. f 1 = SWP_SIZE | SWP_MOVE | SWP_RESTORE | SWP_ZORDER;
WinSetWindowPos(hwndFrame, HWND_T0P, swp.x, swp.y,
swp.cx, swp.cy, swp.fl);
WinShowWindow(hwndFrame,TRUE);
return hwndFrame;
} /* end MYFILEInit() */
/* success */
MYFILEWndProc()
DESCRIPTION: MYFILE Window Procedure
MRESULT EXP ENTRY MYFILEWndProc( HWND hwnd, ULONG msg, MPARAM mpl, MPARAM mp2 )
{
PWINDOWDATA pWindowData;
HWND hwndFrame;
BOOL fSuccess;
hwndFrame = WinQueryWindow(hwnd, QW PARENT);
switch( msg )
{
case WM CREATE:
pWindowData = (PWINDOWDATA) mpl;
if (pWindowData == NULL)
{
DebugBox("MYFILEWndProc:WM CREATE”, "couldn’t get window words”);
return FALSE;
}
/*
* Fill in the class view/usage details and window specific data
* for this instance.
*/
pWindowData->UseI tern, type = USAGE_OPENVIEW;
pWindowData->ViewItem.view = OPEN MYFILE;
pWindowData->ViewItem.handle = hwndFrame;
Files MYFILE.c 03/22/94 14s26
Printed on 08/01/94 at 17;02
Page 11
/*
* Set window pointer with object pointer and instance view info.
* Then add view to the in-use list so wpSwitchTo works.
V
WinSetWindowPtr(hwnd, QWL_USER, pWindowData);
wpAddToObjUseList(pWindowData->somSelf,&pWindowData->UseItem);
_ wpRegisterView(pWindowData->somSelf, hwndFrame,
wpQueryTitle(pWindowData->somSelf));
WinSetFocus( HWND_DESKTOP, hwndFrame);
break;
case WM_COMMAND:
break;
case WM PAINT;
pWindowData = (PWINDOWDATA) WinQueryWindcrwPtr (hwnd, QWL_USER);
if (pWindowData == NULL)
{
DebugBox("MYFILEWndProc:WM_PAINT" / ’’couldn't get window words");
return FALSE;
}
else
{
HPS hps;
RECTL recti;
hps = WinBeginPaint( hwnd, (HPS)NULLHANDLE, firectl);
WinFillRect( hps, firectl, SYSCLR_WINDOW);
WinDrawPointer(hps, 50, 50,
wpQuerylcon(pWindowData->somSelf), DP_NORMAL);
WinEndPaint( hps );
}
break;
case WM CLOSE:
{
HAB hab;
hab = WinQueryAnchorBlock(HWND__DESKTOP) ;
pWindowData = (PWINDOWDATA) WinQueryWindowPtr(hwnd, QWL_USER);
if (pWindowData == NULL)
{
DebugBox("MYFILEWndProc:WM^CLOSE", "couldn’t get window words’’);
return FALSE;
}
/*
* Restore the Window Position
*/
fSuccess = WinStoreWindowPos(szMYFILEClassTitle,
wpQueryTitle(pWindowData->somSelf),
hwndFrame);
wpDeleteFromObjUseList(pWindowData->somSelf,&pWindowData->UseItem);
~wpFreeMem(pWindowData->somSelf,(PBYTE)pWindowData);
WinPostMsg( hwnd, WM_QUIT, 0, 0 );
WinDestroyWindow ( hwndFrame ) ;
}
break;
default:
return WinDefWindowProc( hwnd, msg, mpl, mp2 );
>
return FALSE;
} /* end MYFILEWndProc() */
/******************************************************************************
*
* LastWorkerDlgProc()
A
* DESCRIPTION: Dialog Procedure for LastWorker settings page
*
******************************************************************************/
MRESULT EXPENTRY LastWorkerDlgProc(HWUD hwndDlg, ULONG msg,
MPARAM mpl, MPARAM mp2)
{
LASTWORKERDLGDATA * pLastWorkerDlgData;
switch (msg)
{
case WM_INITDLG: /* 0x003b */
{
PSZ pszTemp;
/*
* Store some instance specific data in Window words of this dialog.
* This will ensure our dialog procedure can access this objects
* data (our dialog proc isn’t always passed a *somSelf pointer).
*/
pLastWorkerDlgData =
(PLASTWORKERDLGDATA) _wpAllocMem((MYFILE *)rap2, sizeof(*pLastWorkerD
lgData), NULL);
if (pLastWorkerDlgData)
{
meraset((PVOID) pLastWorkerDlgData, 0, sizeof(*pLastWorkerDlgData));
pLastWorkerDlgData->cb = sizeof(*pLastWorkerDlgData);
pLastWorkerDlgData->somSeIf = (MYFILE *) mp2; /* pointer to this o
bject */
pszTemp = queryLastWorker(pLastWorkerDlgData->somSelf);
if (pszTemp)
{
pLastWorkerDlgData->PrevWorker =
(PSZ) wpAllocMem(pLastWorkerDlgData->somSelf,
CCHMAXPATH+1, NULL);
if (pLastWorkerDlgData~>PrevWorker)
{
strcpy(pLastWorkerDlgData->PrevWorker, pszTemp);
}
}
pLastWorkerDlgData->restorePrevWorker =
(PSZ) wpAllocMem(pLastWorkerDlgData->somSelf,
CCHMAXPATH +1, NULL);
if (pLastWorkerDlgData->restorePrevWorker)
{
strcpy(pLastWorkerDlgData->restorePrevWorker,
pLastWorkerDlgData->PrevWorker);
}
}
else
{
DebugBox("LastWorkerDlgProc:WM INITDLG", "Couldn't allocate window w
ords");
break;
>
WinSetWindowPtr(hwndDlg, QWL_USER, pLastWorkerDlgData);
Files MYFILE.c 03/22/94 14s26
/* set the text limit on the entry field
*/
W±nSendDlgItemMsg( hwndDlg, IDC_LASTWORKER, EM_SETTEXTLIMIT,
MPFROMSHORT( 0x1000-1 ), 0 );
/* set the name into the entry field
*/
WinSetWindowText( WlnWlndowFromlD( hwndDlg, IDCLASTWORKER ),
queryLastWorker( (MYFILE *) mp2) );
return (MRESULT) FALSE;
} /* end case WM_INITDLG: */
case VM DESTROY* /* 0x0002 */
);
MYFILE * pObject;
pLastWorkerDlgData = WinQueryWindowPtr (hwndDlg, QWL USER);
if (pLastWorkerDlgData == NULL)
{
DebugBox("LastWorkerDlgProc:WM DESTROY", "couldn’t get window words
break;
}
if
{
}
(pLastWorkerDlgData->PrevWorker)
_wpFreeMem(pLastWorkerDlgData->soraSelf,
(PBYTE) pLastWorkerDlgData->PrevWorker);
if
{
}
(pLastWorkerDlgData->restorePrevWorker)
_wpFreeMem(pLastWorkerDlgData->somSelf,
(PBYTE) pLastWorkerDlgData->restorePrevWorker);
pObject = pLastWorkerDlgData->somSelf;
_wpFreeMem(pObject, (PBYTE)pLastWorkerDlgData);
return (WinDefDlgProc(hwndDlg, msg, mpl, mp2) );
case WM COMMAND:
/* 0x0020 */
pLastWorkerDlgData = WinQueryWindowPtr(hwndDlg, QWL USER);
if (pLastWorkerDlgData == NULL)
{
DebugBox("LastWorkerDlgProcsWM COMMAND", "couldn’t get window words’
break;
}
switch (SHORT1FROMMP(mpl))
{
case ID_UNDO: /* 0x0321 */
if (pLastWorkerDlgData->restorePrevWorker)
{
_setLastWorker(pLastWorkerDlgData->somSelf,
pLastWorkerDlgData->restorePrevWorker);
if (pLastWorkerDlgData->PrevWorker)
{
strcpy(pLastWorkerDlgData->PrevWorker,
pLastWorkerDlgData->restorePrevWorker);
}
Printed on 08/01/94 at 17s02
Pag©
WinSetWindowText( WinWindowFromID( hwndDlg, IDC_LASTWORKER ),
pLastWorkerDlgData->restorePrevWorker);
\
break;
case ID_DEFAULTs /* 0x0322 */
/*
* preserve previous values
V
setLastWorker(pLastWorkerDlgData->somSelf, DEFAULT LASTWORKER);
if (pLastWorkerDlgData->PrevWorker)
{
strcpy(pLastWorkerDlgData->PrevWorker, DEFAULT_LASTWORKER);
>
WinSetWindowText( WinWindowFromID( hwndDlg, IDC LASTWORKER ),
pLastWorkerDlgData->PrevWorker);
break;
case ID_HELP: /* 0x0323 */
break;
> /* end switch (SHORTlFROMMP(mpl)) */
return (MRESULT) TRUE;
case WM_CONTROL: /* 0x0030 */
{
pLastWorkerDlgData = WinQueryWindowPtr(hwndDlg, QWL USER);
if (pLastWorkerDlgData == NULL)
{
DebugBox("LastWorkerDlgProc:WM CONTROL", "couldn't get window words"
break;
}
switch (SHORT1FROMMP(mpl))
{
case IDCJLASTWORKER:
if (SHORT2FROMMP(mpl) == EN_CHANGE)
{
CHAR newworker[CCHMAXPATH+1];
WinQueryWindowText( WinWindowFromID( hwndDlg, IDC LASTWORKER),
CCHMAXPATH+1, newworker );
setLastWorker(pLastWorkerDlgData->somSelf, newworker);
if (pLastWorkerDlgData->PrevWorker)
{
strcpy(pLastWorkerDlgData->PrevWorker, newworker);
}
}
return (MRESULT) TRUE;
}
break;
} /* end case WM CONTROL: */
} /* end switch (msg) */
return (WinDefDlgProc(hwndDlg, msg, mpl, mp2) );
/* end LastWorkerDlgProc() */
Files MYFOLDER.c 03/22/94 14s26
* This file was generated by the SOM Compiler.
* FileName; myfolder.c.
* Generated usings
* SOM Precompiler spc: 1.22
* SOM Emitter emitcs 1.24
*/
Module Names MYFOLDER.C
OS/2 Work Place Shell Sample Program
Copyright (C) 1994 IBM Corporation
DISCLAIMER OF WARRANTIES. The following [enclosed] code is
sample code created by IBM Corporation. This sample code is not
part of any standard or IBM product and is provided to you solely
for the purpose of assisting you in the development of your
applications. The code is provided “'AS IS", without
warranty of any kind. IBM shall not be liable for any damages
arising out of your use of the sample code, even if they have been
advised of the possibility of such damages.
Entry Points?
Class Methods?
myfoldM_clsQueryModuleHandle
Overridden Class Methods:
myfoldMwpclsInitData
my foldM_wpclsQueryTi11e
myfoldM_wpclsQueryIconData
myfoldM_wpclsQueryDefaultView
Instance Methods:
myfold_closeViews
myfold_queryFirstViewHandle
myfold_setFirstViewHandle
Overridden Instance Methods?
myfold wpOpen
myfold_wpClose
myfold_wpMenuItemHelpSelected
myfold_wpMenuItemSelected
myfold_wpModifyPopupMenu
myfold_wpDragOver
myfo1d_wpDrop
myfold_wpDeleteFromObjUseList
myfold_wpQueryConcurrentView
myfold_wpInitData
Non-Method Functions:
****************
*******************/
#define INCL_DOS
#define INCL_PM
#include <os2.h>
Printed on 08/01/94 at 17s02
Pi
#include <string.h>
#define MYFOLDER Class Source
#define M_MYFOLDER_ClaIs_Source
#include "myfolder.ih"
#include "myfolder.ph"
/***************** GLOBAL/STATIC (NON-INSTANCE) DATA SECTION ***********
*****
***** This data shouldn't be changed by instance methods or it will
***** effect all instances 1 Any variables that are specific (unique
***** values) for each instance of this object should be declared as
***** instance data or dynamically allocated and stored as window data.
*****
***** This global data should be declared as class instance data
***** if if w in change after initialization. In this case, it will
***** be accessed through class methods.
s zMYFOLDERClassTitle [ CCHMAXPATH ]
hmod = NULLHANDLE;
METHOD: wpOpen
DESCRIPTION:
( ) PRIVATE
(X) PUBLIC
* Do special processing on first open of folder
*/
SOM_Scope HWND SOMLINK myfold_wpOpen(MYFOLDER *somSelf,
HWND hwndCnr,
ULONG ulView,
ULONG param)
HWND hwndFromParentOpen = NULLHANDLE;
MYFOLDERData *somThis = MYFOLDERGetData(somSelf);
MYFOLDERMethodDebug("MYFOLDER","myfold_wpOpen") ;
if (_queryFirstViewHandle(somSelf) == NULLHANDLE)
{
/* we ONLY want to do this on the FIRST open of the folder.
*/
if (_wpPopulate(somSelf, NULLHANDLE, NULL, FALSE))
{
WPObject *Obj;
WPObject *LastFoundObj = NULL;
/* loop through the contents of the folder, checking each to
* see if it is an instance of a WPFolder, we'll delete any
* WPFolders as a cleanup step
*/
for ( Obj = wpQueryContent( somSelf,NULL, (ULONG)QC_First);
Ob j;
Obj = wpQueryContent(somSelf, Obj, (ULONG) QC_Next ))
{
/* delete the last object found on the previous iteration
* of the loop (we couldn't delete it then, because we
* needed it at the top of the loop for this iteration)
V
if (LastFoundObj)
{
_wpDelete(LastFoundObj,0);
LastFoundObj = NULL;
File; MYFOLDER.c 03/22/94 14:26
}
/* we want to make sure that all previously
* existing folders are deleted
V
if ( somIsA(Obj, WPFolder))
{
LastFoundObj = Obj;
}
} /* end for */
/* if there is still one object left to delete, do it now
*/
if (LastFoundObj)
{
wpDelete(LastFoundObj,0);
LastFoundObj = NULL;
}
} /* end if populate */
} /* end if first open */
/* now, show the opened folder */
hwndFromParentOpen = parent wpOpen(somSelf, hwndCnr, ulView, param);
/* if this is the first open, set our global flag
*/
if (_queryFirstViewHandle(somSelf) == NULLHANDLE)
{
setFirstViewHandle(somSelf, hwndFromParentOpen);
}
return hwndFromParentOpen;
}
/*
*
* METHOD: wpInitData
* DESCRIPTION:
*
* Set object's detail class to be MYFILE
*/
SOM_Scope VOID SOMLINK myfold_wpInitData(MYFOLDER *somSelf)
{
SOMClass * pClass;
somld Classld;
MYFOLDERData *somThis = MYFOLDERGetData(somSelf) ;
MYFOLDERMethodDebugC'MYFOLDER","myfold_wpInitData") ;
parent wpInitData(somSelf);
Classld = SOM_IdFroraString( "MYFILE” );
pClass = somFindClass( SOMClassMgrObject, Classld, 1, 1);
SOMFree(Classld);
wpSetFldrDetailsClass(somSelf, pClass);
}
/*
* METHOD: wpModifyPopupMenu ( ) PRIVATE
* (X) PUBLIC
* DESCRIPTION:
* Add our extra option to the context menu to close all but first view
*/
( ) PRIVATE
(X) PUBLIC
Printed on 08/01/94 at 17:02
Page 2
SOM Scope BOOL SOMLINK myfold wpModifyPopupMenu(MYFOLDER *soraSelf,
HWND hwndMenu,
HWND hwndCnr,
ULONG iPosition)
{
HMODULE hmod = NULLHANDLE;
zString zsPathNarae;
/* MYFOLDERData *somThis = MYFOLDERGetData(somSelf); */
MYFOLDERMethodDebug("MYFOLDER","myfold wpModifyPopupMenu");
zsPathName =
_somLocateClassFile( SOMClassMgrObject, SOM IdFroraString("MYFOLDER"),
MYFOLDER_MajorVersion, MYFOLDER MinorVersion);
DosQueryModuleHandle(zsPathName, fihmod);
wpInsertPopupMenuItems( somSelf, hwndMenu, 0, hmod, ID CLOSEVIEWSMENU, 0);
return (parent wpModifyPopupMenu(somSelf,hwndMenu,hwndCnr,iPosition));
METHOD: wpMenuItemSelected
DESCRIPTION:
( ) PRIVATE
(X) PUBLIC
* Process input from the extra menu option that we added.
V
SOM_Scope BOOL SOMLINK myfold_wpMenuItemSelected(MYFOLDER *somSelf,
HWND hwndFrame,
ULONG ulMenuId)
{
/* MYFOLDERData *somThis = MYFOLDERGetData(somSelf); */
MYFOLDERMethodDebug("MYFOLDER","myfold wpMenuItemSelected");
if (ulMenuId == IDM_CLOSEVIEWS)
{
closeViews(somSelf);
return(TRUE);
}
else
{
return (parent_wpMenuItemSelected(somSelf,hwndFrame,ulMenuId));
}
METHOD: closeViews
DESCRIPTION:
( ) PRIVATE
(X) PUBLIC
* Close all but the first of the currently open views of a rayfolder object.
* NOTE: There is a "Close Views" option on the context menu, that will
* call this method
*/
SOM_Scope void SOMLINK myfold closeViews(MYFOLDER *somSelf)
{
PUSEITEM pUseltem, pUseltemNext;
PVIEWITEM pViewItem;
HWND hwndView;
typedef struct _HANDLENODE
{
LHANDLE handle;
struct _HANDLENODE * pNextHandle;
} HANDLENODE;
Files MYFOLDER «c 03/22/94 14s26
HANDLENODE *pHandles = NULL;
HANDLENODE *pTemp = NULL;
/* MYFOLDERData *somThis = MYFOLDERGetData(somSelf); */
MYFOLDERMethodDebug ("MYFOLDER", "myfold_closeViews") ;
/* go through use list looking for OPENVIEW use items, as you
* find one, add view item's handle to a list
*/
for ( pUseltem = _wpFindUseItem(somSelf , USAGE_OPENVIEW, NULL);
pUseltern;
pUseltem = wpFindUseItem(somSelf , USAGE OPENVIEW, pUseltem) )
{
if (pTemp = (HANDLENODE*) wpAllocMem(somSelf,sizeof(HANDLENODE),NULL
{
pViewItem = (PVIEWITEM)(pUseltem + 1);
pTemp->handle - pViewItem->handle;
pTemp->pNextHandle = pHandles;
pHandles = pTemp;
/* go through list of handles we just found and close any
* views other than the first one
*/
pTemp = pHandles;
while (pTemp)
{
if ( queryFirstViewHandle(somSelf) != (HWND)pTemp->handle )
{
WinSendMsg( (HWND)pTemp->handle, WM_CL0SE, 0, 0);
}
pTemp = pTemp->pNextHandle;
}
/* free our list */
while (pHandles)
{
pTemp = pHandles;
pHandles = pTemp->pNextHandle;
wpFreeMem(somSelf,(PBYTE)pTemp);
METHOD: queryFirstViewHandle
DESCRIPTION:
( ) PRIVATE
(X) PUBLIC
return the handle of the view that was opened first of the
currently open views of this myfolder object.
SOM Scope HWND SOMLINK myfold queryFirstViewHandle(MYFOLDER *somSelf)
{
MYFOLDERData *somThis = MYFOLDERGetData(somSelf);
MYFOLDERMethodDebug("MYFOLDER","myfold_queryFirstViewHandle");
return hwndFirstView;
/
Printed on 08/01/94 at 17:02
* METHOD: setFirstViewHandle ( ) PRIVATE
* (X) PUBLIC
* DESCRIPTION:
*
* Do special processing on first open of folder
*
* PARAMETERS:
* HWND - hwnd of the first currently open view of this object
*
* RETURNS:
TRUE - hwnd set successfully
FALSE - first hwnd wasn't set successfully
*/
SOM Scope BOOL SOMLINK myfold setFirstViewHandle(MYFOLDER *somSelf,
HWND hwndView)
{
BOOL rc = TRUE;
MYFOLDERData *somThis = MYFOLDERGetData(somSelf);
MYFOLDERMethodDebug("MYFOLDER","myfold_setFirstViewHandle");
if (hwndView 1= NULLHANDLE)
{
if ( hwndFirstView == NULLHANDLE) /* no current first view */
{
hwndFirstView = hwndView; /* setting to a first view handle */
}
else
{
/* a non-null hwndFirstView can only be wiped out by resetting it
* to NULLHANDLE, not to another handle. This prevents a
* misuse of this method
*/
rc = FALSE;
/* wiping out first view handle */
hwndFirstView = NULLHANDLE;
return rc;
* METHOD: wpMenuItemHelpSelected
DESCRIPTION:
( ) PRIVATE
(X) PUBLIC
Process input from the extra menu option that we added.
SOM Scope BOOL SOMLINK myfold_wpMenuItemHelpSelected(MYFOLDER *somSelf,
ULONG Menuld)
{
MYFOLDERData *somThis = MYFOLDERGetData(somSelf);
MYFOLDERMethodDebug("MYFOLDER","myfold_wpMenuItemHelpSelected") ;
return (parent wpMenuItemHelpSelected(somSelf,Menuld));
/
Fil@s MYFOLDER„c 03/22/94 14:26
* METHODS wpClose ( ) PRIVATE
* (X) PUBLIC
* DESCRIPTIONS
*
* When a folder object is closed, we will zero out its first view
* instance variable, so that the next time it has a first view opened,
* we can keep track of that.
*/
SOM Scope BOOL SOMLINK myfold wpClose(MYFOLDER *somSelf)
{
MYFOLDERData *soraThis = MYFOLDERGetData(somSelf);
BOOL rcParentClose;
MYFOLDERMethodDebug ("MYFOLDER","myfold_wpClose") ;
rcParentClose = parent_wpClose(somSelf);
setFirstViewHandle(somSelf, NULLHANDLE);
return(rcParentClose) ;
>
/*
* METHOD s wpDragOver
A
* DESCRIPTIONS
( ) PRIVATE
(X) PUBLIC
* Instances of class MYFOLDER are the only folders that accept a drop
* of a MYFILE object. This override returns DOR_DROP when a MYFILE
* object is dragged over a MYFOLDER object.
A/
S0M_Scope MRESULT SQMLINK myfold_wpDragOver(MYFOLDER *somSelf,
HWND hwndCnr,
PDRAGINFO pdrglnfo)
{
MRESULT mr;
PDRAGITEM pDragltem;
ULONG i;
ULONG ulOurs = 0;
/* MYFOLDERData *sonfThis = MYFOLDERGetData(somSelf); */
MYFOLDERMethodDebug("MYFOLDER","rayfold_wpDragOver") ;
for (i = 0; i < pdrglnfo->cditem ; i++)
{
pDragltem = DrgQueryDragitemPtr(pdrglnfo,i);
if (DrgVerifyRMF(pDragltem,"DRM_OUROWNSPECIAL","DRF_OBJECT") )
{
ulOurs++;
}
if (ulOurs == 0)
{
mr = (parent wpDragOver(somSelf,hwndCnr,pdrglnfo));
}
else
{
if (ulOurs == pdrgInfo->cditera)
{
mr = MRFROM2SHORT(DOR_DROP,
(SHORT)((pdrglnfo->usOperation == DO DEFAULT)
? DO MOVE s pdrgInfo->usOperation));
}
else
{
Printed on 08/01/94 at 17s02
Pag© 4
mr = MRFROM 2 S HORT(DOR_NEVERDROP,DO_DEFAULT);
return mr;
* METHOD: wpDrop
* DESCRIPTIONS
( ) PRIVATE
(X) PUBLIC
* This override will be called after a drop of a MYFILE object, so that
* the drop can actually be processed.
A/
SOM_Scope MRESULT SOMLINK myfold wpDrop(MYFOLDER *somSelf,
HWND hwndCnr,
PDRAGINFO pdrglnfo,
PDRAGITEM pdrgltem)
{
ULONG i;
PDRAGITEM pDragltem;
/* MYFOLDERData *somThis = MYFOLDERGetData(somSelf); */
MYFOLDERMethodDebug("MYFOLDER* V'myfold_wpDrop");
for (i = 0; i < pdrglnfo->cditem ; i++)
{
pDragltem = DrgQueryDragitemPtr(pdrglnfo,i) ;
if (DrgVerifyRMF(pDragltem,"DRM_OUROWNSPECIAL M ,"DRF OBJECT"))
{
DrgDeleteStrHandle(pDragltem->hstrRMF);
pDragltem->hstrRMF = DrgAddStrHandle("<DRM OBJECT,DRF OBJECT>”);
}
return (parent_wpDrop(somSelf,hwndCnr,pdrglnfo,pdrgltem));
SOM_Scope BOOL SOMLINK myfold_wpDeleteFromObjUseList(MYFOLDER *somSelf,
PUSEITEM pUseltem )
{
MYFOLDERData *somThis = MYFOLDERGetData(somSelf) ;
PUSEITEM pitern;
BOOL rcParentCall;
MYFOLDERMethodDebug( "MYFOLDER","myfold wpDeleteFromObjUseList") ;
rcParentCall = parent_wpDeleteFromObjUseList(somSelf, pUseltem);
pitern = _wpFindUseItem(somSelf, USAGE OPENVTEW, NULL);
if (Ipltem)
{
_setFirstViewHandle(somSelf, NULLHANDLE);
>
return(rcParentCall);
METHOD: wpQueryConcurrentView
* DESCRIPTION:
( ) PRIVATE
(X) PUBLIC
* Objects of MYFOLDER class have concurrent views set on
* by default
V
SOM_Scope ULONG SOMLINK myfold_wpQueryConcurrentView(MYFOLDER *somSelf )
Files MYFOLDER.c 03/22/94 14s26
{
/* MYFOLDERData *3onfThis = MYFOLDERGetData(somSelf); */
MYFOLDERMethodDebug("MYFOLDER", "rayfold wpQueryConcurrentView");
return CCVXEW_ON;
}
#undef SOM CurrentClass
#define SOM CurrentClass SOMMeta
/*
* METHOD: wpclsInitData
* DESCRIPTION:
* Initalize the class data
*/
SGM_Scope void SOMLINK myfoldM_wpclsInitData(MYFOLDER *somSelf)
{
/* MYFOLDERData *soraThis = MYFOLDERGetData(somSelf); */
MYFOLDERMethodDebug("MYFOLDER","myfoldM_wpclsInitData") ;
parent_wpclsInitData(somSelf);
/*
* Get class title
V
if (lWinLoadString(WinQueryAnchorBlock(HWND DESKTOP), _clsQueryModuleHandle(
somSelf), ID_TITLE,
sizeof(szMYFOLDERClassTitle), szMYFOLDERClassTitle))
/* Load string failed: use the parent’s string */
strcpy(szMYFOLDERClassTitle, parent_wpclsQueryTitle(somSelf));
}
/*
* METHOD: clsQueryModuleHandle
* DESCRIPTION:
( ) PRIVATE
(X) PUBLIC
This method returns the module handle of this class. If this is the
first invocation, DosQueryModuleHandle is called to save the handle
for future invocations.
* RETURN:
*
* 0 Unsuccessful
* non-zero module handle
V
SOM_Scope HMODULE SOMLINK rayfoldM_clsQueryModuleHandle(M_MYFOLDER *somSelf)
{
APIRET rc;
/* M_MYFOLDERData *somThis = M_MYFOLDERGetData(somSelf); */
M_MYFOLDERMethodDebug("M_MYFOLDER","rayfoldM_clsQueryModuleHandle");
/*
* Make sure we already have module handle
*/
if (hmod == NULLHANDLE)
{
Printed on 08/01/94 at X7s02
zString zsPathName;
/*
* Retrieve registered pathname of our module (DLL) and query the
* module handle.
*/
zsPathName =
somLocateClassFile( SOMClassMgrObject, SOM IdFromString("MYFOLDER"),
MYFOLDER_MajorVersion,~MYFOLDER_MinorVersion);
rc =
DosQueryModuleHandle( zsPathName, fihmod);
if (rc)
{
DebugBox("myfoldM wpclsInitData", "Failed to load module");
return;
} /* end if (hmod == NULLHANDLE) */
return (hmod);
}
/*
* METHOD: wpclsQueryDefaultView
* DESCRIPTION:
* MYFOLDER objects open in OPEN_DETAILS by default
V
SOM_Scope ULONG SOMLINK myfoldM_wpclsQueryDefaultView(M_MYFOLDER *somSelf)
{
/* M MYFOLDERData *somThis = M_MYFOLDERGetData(somSelf); */
M MYFOLDERMethodDebug("M_MYFOLDER", "myfoldM_wpclsQueryDefaultView") ;
return OPEN DETAILS;
( ) PRIVATE
(X) PUBLIC
/*
* METHOD: wpclsQueryTitle
*
* DESCRIPTION:
* Return class title for MYFOLDER class
V
SOM_Scope PSZ SOMLINK myfoldM_wpclsQueryTitle(M_MYFOLDER *somSelf)
{
/* M_MYFOLDERData *somThis = M_MYFOLDERGetData(somSelf); */
M MYFOLDERMethodDebug("M MYFOLDER", "myfoldM_wpclsQueryTitle");
if (*szMYFOLDERClassTitle )
return( szMYFOLDERClassTitle );
else
return( parent wpclsQueryTitle(somSelf));
}
/*
METHOD: wpclsQuerylconData
( ) PRIVATE
(X) PUBLIC
Files MYFOLDER.c 03/22/94 14s26
* DESCRIPTION:
* Return the class icon
A
V
SOM_Scope ULONG SGMLINK myfoldM_wpclsQueryIconData(M MYFOLDER *somSelf,
PICONINFO plconlnfo)
{
APIRET rc;
M_MYFOLDERMethodDebug( **M MYFOLDER'”/'niyfoldM wpclsQuerylconData");
if (plconlnfo)
/*
fill in icon information
*/
pIconInfo->fForraat = ICON_RESOURCE;
pIconInfo->hmod= _clsQueryModuleHandle(somSelf) ;
pIconInfo->resid= ID ICON;
return (sizeof(ICONINFO));
}
Files MYFILE.esc 03/22/94 14s26
/A*****************************************************************************
A
* Module Names MYFILE
*
* OS/2 Work Place Shell Sample Program
*
* Copyright (C) 1994 IBM Corporation
A
* DISCLAIMER OF WARRANTIES. The following code is
* sample code created by IBM Corporation. This sample code is not
* part of any standard or IBM product and is provided to you solely
* for the purpose of assisting you in the development of your
* applications. The code is provided '"AS IS", without
* warranty of any kind. IBM shall not be liable for any damages
* arising out of your use of the sample code, even if they have been
* advised of the possibility of such damages.
A
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/
ftAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
* Include the class definition file for the parent class
flAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
include <wpdataf.sc>
jfAAAAAAAAA *********************************************************************
* Define the new class
^AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
class:
MYFILE,
external stem = myfile,
local,
external prefix = myf_,
classprefix = myfM_,
major version = 1,
minor version =2;
-- CLASS: MYFILE
-- CLASS HIERARCHY:
SOMObject
- WP(j)bject
WPFileSystera
- WPDataFile
'- MVT?T
-- DESCRIPTION:
This is the sample MYFILE object class.
An instance of this class can be created as a Workplace object.
ftAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
# Specify the parent class
flAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
parent: WPDataFile;
jfAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
# Specify the release order of new methods. This ensures binary
# compatability if we change the order of our methods in .c and .esc files.
^aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Printed on 08/01/94 at 17:02 Page 1
release order:
queryLastWorker,
setLastWorker,
soundAlarm,
AddLastWorkerPage,
clsQueryModuleHandle,
clsQueryDefaultFileText;
ftAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
# Passthru PRIVATE definitions to the .ph file
ftAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
passthru: C.ph;
/*
* The following structures will be used to store window specific data
* and a pointer to the object that created the window/dialog.
*
* They’re allocated when the Client window is created. This
* allows us to pass the *somSelf pointer and use it in our
* window and dialog procedures (the system only passes this
* pointer to methods).
*/
typedef struct WINDOWDATA
{
USHORT cb;
MYFILE *somSelf;
USEITEM Useltem;
VIEWITEM Viewltem?
} WINDOWDATA;
typedef WINDOWDATA *PWINDOWDATA;
/* size of this structure */
/* pointer to this instance */
/* global class usage information
/* global class view information 1
*/
7
/*
* Window data for the Worker dialog (settings page)
*/
typedef struct _LASTWORKERDLGDATA
{
USHORT cb; /* size of this structure */
MYFILE *soraSelf; /* pointer to this instance */
PSZ PrevWorker; /* indicates name of person to last work */
/* with this file */
PSZ restorePrevWorker; /* used for UNDO */
} LASTWORKERDLGDATA;
typedef LASTWORKERDLGDATA *PLASTWORKERDLGDATA;
/*
* Private Debug helpers go here. They can be enabled/disabled by
* defining DEBUG as a compiler directive.
*/
#if defined(DEBUG)
^define DebugBox(title, text) \
\
WinMessageBox( \
HWND_DESKTOP, \
HWND_DESKTOP, \
(PSZ) text, \
(PSZ) title, \
20 , \
MB_0K | MB_ INFORMAT ION | MB_MOVEABLE)
#else
#define DebugBox(title, text) /* do nothing if not debugging */
#endif
endpassthru; /* C.ph */
Files MYFI1E.esc 03/22/94 14s26
n******************************************************************************
# Passthru IMPLEMENTATION definitions to the .ih file
£******************************************************************************
passthru; C.ih;
#define INCL_WIN
#define INCL_DOS
#define INCL_GPIBITMAPS
#define INCL_DOSERRORS
#include <os2.h>
#define INCL_WPCLASS
#define INCL_WPFOLDER
#include <pmwp.h>
#define ID_TITLE 100
#define ID_ICON 101
#define IDDJLASTWORKER 200 /* settings page (dialog) */
#define IDC LASTWORKER 300
/*
* The following user-defined Popup menu items (ID_xxx) should be higher
* than WPMENUID_USER.
*
* The ID_OPENMENU will become a submenu of the system's popup open menu
* id, WPMENUID_OPEN.
*/
#define ID_ALARMMENU (WPMENUIDJJSER+l) /* menus added to popup menu */
#define ID_OPENMENU (WPMENUID_USER+2)
#define IDM_OPENMYFILE (WPMENUID_USER+3) /* submenus of added menus */
#define IDM_SOUNDALARM (WPMENUID_USER+4)
#define ID_FRAME 3000
#define ID_CLIENT 3001
/*
* Set unique view ids, in order for the default view checkmark
* to be set correctly, on the Open submenu, this OPEN view id must
* be the same value as the corresponding menu id.
*/
#define OPEN_MYFILE IDM_OPENMYFILE
/*
* IDs of dialog items in MYFILE.RC
*/
^define IDJJNDO 801
#define ID_DEFAULT 802
#define ID_HELP 803
#define ID_HELP_LASTWORKER 804
#define ID_HELP_SOUNDALARM 805
/*
* Keys for save-restore methods
*/
#define IDKEY_LASTWORKER 1
/*
* Default values of instance data items
*/
#define DEFAULT_LASTWORKER "Anonymous"
/* frame window id */
/* client window id */
Printed on 08/01/94 at 17:02
Page
/*
* Help IDs
*
* NOTE; At this time, no source file is provided to build help for this
* sample. A pre-built help file, MYFILE.HLP, is provided containing the
* following help ids.
*/
#define ID_HELP_DEFAULT 256
/*
* Indexes into MYFILEDETAILS information, (arrays)
*/
#define INDEX_LASTWORKER 0
/*
* MYFILEDETAILS: Structure used for details view
*/
typedef struct ^MYFILEDETAILS
{
PSZ pszLastWorker; /* Last person to work with myfile */
} MYFILEDETAILS;
typedef MYFILEDETAILS *PMYFILEDETAILS;
endpassthru; /* .ih */
#*************************************A***************************a************
# Define instance data
I******************************************************************************
data:
PSZ pszLastWorker; /* name of last person to work with this file */
|******************A*******A*******A****iAfi*(kA******A*A*****A***A**4ft****A***im
# Define methods
A******************************************************************************
methods:
PSZ queryLastWorker();
( ) PRIVATE
(X) PUBLIC
Query name of last person to work with myfile
— RETURN:
PSZ name of last person to work on file
-- METHOD: queryLastWorker
-- DESCRIPTION:
BOOL setLastWorker( PSZ pszWorkerName );
( ) PRIVATE
(X) PUBLIC
Set name of last person to work with myfile
-- RETURN:
TRUE Brake is on
FALSE Brake is off
-- METHOD: setLastWorker
-- DESCRIPTION:
Files MlfFXLE.cse 03/22/94 14s26
BOOL soundAlann();
-- METHODS soundAlann
-- DESCRIPTIONS
Sound an alarm
-- RETURNS
TRUE Successful
FALSE Unsuccessful
ULGNG AddLastWorkerFage (KWND hwiiciNotebook) m ,
-- METHODS AddLastWorkerPage
-- DESCRIPTIONS
This method adds the Last Worker page to the settings notebook.
-- RETURNS
0 Unsuccessful
ulPageld Identifier for the inserted page
-- HOW TO OVERRIDES
Method should always be overridden in order to replace or remove
the last worker page from an object which is a descendent of rayfile
In most cases, an override of this method will not call the parent.
#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
# Specify methods being overridden
flAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
override wpInitData;
-- OVERRIDES wpInitData
-- DESCRIPTIONS
Initialize our state variables. Allocate any extra memory that
we might need.
override wpUnlnitData;
-- OVERRIDES wpUnlnitData
-- DESCRIPTIONS
Clear up memory that was allocated on wpInitData.
override wpSaveState;
-- METHODS wpSaveState ( ) PRIVATE
(X) PUBLIC
-- DESCRIPTIONS
Save our state variables (pitch and duration).
( ) PRIVATE
(X) PUBLIC
( ) PRIVATE
(X) PUBLIC
( ) PRIVATE
(X) PUBLIC
( ) PRIVATE
(X) PUBLIC
Printed on 08/01/94 at 17s02
Page 3
override wpRestoreState; ' ^
-- METHODS wpRestoreState
-- DESCRIPTIONS
Retrieve our saved state variables (pitch and duration).
override wpAddSettingsPages;
-- METHODS wpAddSettingsPages
_ DESCRIPTIONS
Add our own settings page to let the user alter the pitch
and duration of the myfile's beep.
override wpFilterPopupMenu;
-- METHOD: wpFilterPopupMenu ( ) PRIVATE
(X) PUBLIC
-- DESCRIPTION:
Filter out any options from the context that don’t apply.
-- HOW TO OVERRIDE:
No restrictions.
override wpModifyPopupMenu;
-- METHOD: wpModifyPopupMenu ( ) PRIVATE
(X) PUBLIC
-- DESCRIPTION:
Add our extra option to the context menu to beep the horn
override wpMenuItemSelected;
-- METHOD: wpMenuItemSelected
-- DESCRIPTION:
Process input from the extra menu option that we added,
override wpMenuItemHelpSelected;
-- METHOD: wpMenuItemHelpSelected ( ) PRIVATE
(X) PUBLIC
-- DESCRIPTION:
Process input from the extra menu option that we added,
override wpQueryDetailsData;
— METHOD: wpQueryDetailsData ( ) PRIVATE
(X) PUBLIC
-- DESCRIPTION:
Returns the myfile specific data for the details view of this object.
( ) PRIVATE
(X) PUBLIC
( ) PRIVATE
(X) PUBLIC
( ) PRIVATE
(X) PUBLIC
File; MYFILE.cec 03/22/94 14;26
Sets the pointer (*ppDetailsData) to the beginning of the buffer
into which the data is written.
override wpOpen;
METHOD: wpOpen
-- DESCRIPTION:
Opens the myfile window
override wpSetup;
-- METHOD: wpSetup
-- DESCRIPTION:
Specify Setup strings and do some initialization. This method is
invoked once an object is completely created.
override wpFormatDragltem;
-- METHOD: wpFormatDragltem
-- DESCRIPTION:
Specify a unique RMF that will only be understood by instances
of class MYFOLDER. (see wpDragOver and wpDrop overrides in
myfolder.c).
I************************************************************************
# Define class methods
*************************************************************************
HMODULE clsQueryModuleHandle (), class;
-- METHOD: clsQueryModuleHandle
-- DESCRIPTION:
This method returns the module handle of this class. If this is the
first invocation, DosQueryModuleHandle is called to save the handle
for future invocations.
-- RETURN:
0 Unsuccessful
non-zero module handle
PSZ clsQueryDefaultFileText (), class;
-- METHOD: clsQueryDefaultFileText
-- DESCRIPTION:
This method returns some default text to stuff in an empty MYFILE.
-- RETURN:
( ) PRIVATE
(X) PUBLIC
( ) PRIVATE
(X) PUBLIC
( ) PRIVATE
(X) PUBLIC
( ) PRIVATE
(X) PUBLIC
( ) PRIVATE
(X) PUBLIC
PSZ
Printed on 08/01/94 at 17:02
override wpclsQuerylconData, class;
— METHOD: wpclsQuerylconDdata
— DESCRIPTION:
Return the class icon
( ) PRIVATE
(X) PUBLIC
override wpclsQueryDefaultHelp, class;
-- METHOD: wpclsQueryDefaultHelp ( ) PRIVATE
(X) PUBLIC
-- DESCRIPTION:
Process input from the extra menu option that we added,
override wpclsQueryDefaultView, class;
-- METHOD: wpclsQueryDefaultView ( ) PRIVATE
(X) PUBLIC
-- DESCRIPTION:
Returns the default view for a new instance of this object.
-- REMARKS:
Tell the system what our default open view is...
override wpclsQueryDetailsInfo, class;
Files MYFILE.esc 03/22/94 14:26
Printed on 08/01/94 at 17s02
Pa.
-- METHOD: wpclsQueryDetailsInfo
-- DESCRIPTION:
Appends the myfile specific chain of FIELDINFO structures describing the
details data of this object to *ppDetailsData (if ppDetailsData
is NON-NULL). In this case it also sets *ppDetailsData to the
head of the linked list.
Adds the number of bytes required by the details data for myfile to *pSize
(if pSize is NON-NULL).
_ REMARKS:
Add details data for this object.
-- From WPFileSystem
override wpclsQuerylnstanceFilter, class;
-- METHOD: wpclsQuerylnstanceFilter
-- DESCRIPTION:
The wpclsQuerylnstanceFilter method is called to allow the class
object to specify the file title filters for instances of its
class.
-- REMARKS:
A pointer to a string containing file title filter(s). This
string can contain several file title filters separated by a
comma. Example: ,, *.TXT / *.DOC M
override wpclsQueryStyle, class;
-- METHOD: wpclsQueryStyle
-- DESCRIPTION:
The wpclsQueryStyle method is called to allow the class object
to specify the default object class style for its instances.
-- REMARKS:
This method can be called at any time in order to determine the
default style for instances of this class.
( ) PRIVATE
(X) PUBLIC
( ) PRIVATE
(X) PUBLIC
( ) PRIVATE
(X) PUBLIC
This method should be overridden in order to modify the default
object style for instances of this class.
external prefix = myfold ,
class prefix = myfoldM ,
major version = 1,
minor version = 2;
CLASS: MYFOLDER
-- CLASS HIERARCHY:
WPObject
- WPFileSystera
' - A.
DESCRIPTION:
This is the sample MYFOLDER object class.
An instance of this class can be created as a Workplace object
# Specify the parent class
A***************************
parent: WPFolder;
# Specify the release order of new methods. This ensures binary
# compatability if we change the order of our methods in .c and .esc files
^*********************** 14 ***************************************************
Printed on 08/01/94 at 17:02 Page
release order: closeViews,
queryFirstViewHandle,
setFirstViewHandle,
clsQueryModuleHandle;
I***********************************************
# Passthru PRIVATE definitions to the .ph file
************************************************
passthru: C.ph;
* Private Debug helpers go here. They can be enabled/disabled by
* defining DEBUG as a compiler directive.
*/
#if defined(DEBUG)
#define DebugBox(title, text) \
\
WinMessageBox( \
HWND_DESKTOP, \
HWND_DESKTOP, \
(PSZ) text, \
(PSZ) title, \
20 , \
MB_OK | MB_INFORMATION | MB_MOVEABLE)
#else
#define DebugBox(title, text) /* do nothing if not debugging */
#endif
endpassthru; /* C.ph */
Passthru IMPLEMENTATION definitions to the .ih file
passthru: C.ih;
#define ID_TITLE 100
#define ID_ICON 101
#define ID_CLOSEVIEWSMENU (WPMENUID_USER+1) /* menus added to popup menu
#define IDM_CLOSEVIEWS (WPMENUID_USER+2) /* submenus of added menus */
endpassthru;
I******************************************************************************
# Define instance data
I******************************************************************************
HWND hwndFirstView;
# Define methods
I***************************
void closeViews();
METHOD: closeViews
( ) PRIVATE
(X) PUBLIC
File; MYFOLDER.esc 03/22/94 14;26
-- DESCRIPTION;
Close all but. the first open view of a myfolder object.
HWND queryFirstViewHandle( );
METHOD; queryFirstViewHandle ( ) PRIVATE
(X) PUBLIC
-- DESCRIPTION:
return the handle of the view that was opened first of the
currently open views of this myfolder object.
BOOL setFirstViewHandle( HWND hwndView );
METHOD: setFirstViewHandle
-- DESCRIPTION:
Do special processing on first open of folder
-- PARAMETERS:
HWND - hwnd of the first currently open view of this object
-- RETURNS:
TRUE - hwnd set successfully
FALSE - first hwnd wasn’t set successfully
#******************************************************************************
# Specify methods being overridden
*******************************************************************************
override wpOpen;
-- METHOD: wpOpen ( ) PRIVATE
(X) PUBLIC
-- DESCRIPTION:
Do special processing on first open of folder
( ) PRIVATE
(X) PUBLIC
override wpInitData;
-- METHOD: wpInitData
DESCRIPTION;
Set object's detail class to be MYFILE
( ) PRIVATE
(X) PUBLIC
override wpModifyPopupMenu;
[ -- METHOD: v/pModifyPopupMenu
i "
I -- DESCRIPTION:
Add our extra option to the context menu to close
L
( ) PRIVATE
(X) PUBLIC
all but first view
override wpMenuItemSelected;
Printed on 08/01/94 at 17:02
2
Files MYFOLDER.esc 03/22/94 14s26
Objects of MYFOLDER class have concurrent views set on
by default
#************************************************************ ************
# Define class methods
I************************************************************************
HMODULE clsQueryModuleHandle (), class;
-- METHOD: clsQueryModuleHandle
-- DESCRIPTION:
This method returns the module handle of this class. If this is the
first invocation, DosQueryModuleHandle is called to save the handle
for future invocations.
-- RETURN:
0 Unsuccessful
non-zero module handle
# Specify class methods being overridden
ft************************************************************************
override wpclsInitData, class;
-- METHOD: wpclsInitData
-- DESCRIPTION:
Initalize the class data
override wpclsQueryTitle, class;
-- METHOD: wpclsQueryTitle
-- DESCRIPTION:
Return class title for MYFOLDER class
override wpclsQuerylconData, class;
-- METHOD: wpclsQuerylconData
-- DESCRIPTION:
Return the class icon
override wpclsQueryDefaultView, class;
-- METHOD: wpclsQueryDefaultView
-- DESCRIPTION:
( ) PRIVATE
(X) PUBLIC
( ) PRIVATE
(X) PUBLIC
( ) PRIVATE
(X) PUBLIC
MYFOLDER objects will default to details view
Printed on 08/01/94 at 17:02
Page 3
Files MYFILE.def 03/20/94 15s09
; This file was generated by the SQM Toolkit.
; FileName: myfile.def.
; Generated usings
; SOM Compiler scs 1.10
; SOM Emitter emitdefs 1.10
; @(#)emit.c 1.10 10/25/91 14s09s30 [10/31/91] (c)IBM Corp.
LIBRARY MYFILE INITINSTANCE
DESCRIPTION ‘MYFILE Class Library - (c) Copyright IBM 1991'
PROTMODE
DATA MULTIPLE NONSHARED LOADONCALL
EXPORTS
MYFILECClassData
MYFILEClassData
MYFILENewClass
M_MYFILECClassData
M_MYFILEClassData
M MYFILENewClass
1991
Files MYFOLDER.def 02/1Q/94 08s 27
; This file was generated by the SOM Compil
; FileNarae; rayfolder.def.
; Generated using;
; SOM Precompiler spcs 1.22
; SOM Emitter eraitdef: 1.13
LIBRARY myfolder INITINSTANCE
DESCRIPTION 'MYFOLDER Class Library'
PROTMODE
DATA MULTIPLE NONSHARED LOADONCALL
EXPORTS
MYFOLDERCClassData
MYFOLDERClassData
MYFOLD ERN ewClass
Files MYFILE.rc 03/22/94 14s26
y*****************************************************************************
*
* File Name s MYFILE.RC
*
* Description : Define Work Place Shell Sample resources and dialogs
* Copyright (C) 1994 IBM Corporation
A
* DISCLAIMER OF WARRANTIES. The following [enclosed] code is
* sample code created by IBM Corporation. This sample code is not
* part of any standard or IBM product and is provided to you solely
* for the purpose of assisting you in the development of your
* applications. The code is provided "’AS IS", without
* warranty of any kind. IBM shall not be liable for any damages
* arising out of your use of the sample code, even if they have been
* advised of the possibility of such damages.
#include "myfile.ih"
POINTER ID_ICON LOADONCALL MOVEABLE DISCARDABLE myfile.ico
STRINGTABLE
BEGIN
ID_TITLE "MYFILE"
END
MENU ID_ALARMMENU LOADONCALL MOVEABLE DISCARDABLE
BEGIN
MENUITEM ""Sound Alarm", IDM_SOUNDALARM
END
MENU ID_OPENMENU LOADONCALL MOVEABLE DISCARDABLE
BEGIN
MENUITEM ""open My File", IDM_OPENMYFILE
END
DLGTEMPLATE IDD_LASTWORKER LOADONCALL MOVEABLE DISCARDABLE
BEGIN
DIALOG "Last Worker", IDD_LASTWORKER, 11, 17, 190, 134, NOT FS_DLGBORDER
WS VISIBLE
BEGIN
CTEXT
ENTRYFIELD
PUSHBUTTON
PUSHBUTTON
CONTROL
END
"Last User:", 100, 64, 112, 50, 8, DT_VCENTER
"", IDC_LASTWORKER, 35,89,90,8, ES^MARGIN
""Undo", ID_UNDO, 11, 9, 40, 14
""Default", ID_DEFAULT, 71, 9, 40, 14
""Help", ID_HELP, 131, 9, 40, 14,WC_BUTTON,
BS—PUSHBUTTON | BS_HELP | BS_NOPOINTERFOCUS |
WS_TABSTOP | WS_VISIBLE
END
Files MYFC3LDER.ro 03/22/94 14s26
/A***********************************************************************
A
* File Name s MYFOLDER.RC
* Description s Define Work Place Shell Sample resources
* Copyright (C) 1994 IBM Corporation
* DISCLAIMER OF WARRANTIES. The following [enclosed] code is
* sample code created by IBM Corporation. This sample code is not
* part of any standard or IBM product and is provided to you solely
for the purpose of assisting you in the development of your
* applications. The code is provided "AS IS", without
* warranty of any kind. IBM shall not be liable for any damages
* arising out of your use of the sample code, even if they have been
* advised of the possibility of such damages.
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
#include "myfolder.ih"
POINTER ID—ICON LOADONCALL MOVEABLE DISCARDABLE myfolder.ico
STRINGTABLE
BEGIN
ID—TITLE "MYFOLDER"
END
MENU ID—CLOSEVIEWSMENU LOADONCALL MOVEABLE DISCARDABLE
BEGIN
MENUITEM ""Close Views", IDM_CLOSEVIEWS
END
Printed on 08/01/94 at 17s02
Files MAKEFILE 03/22/94 14;22
Printed on 08/01/94 at 17s02
Pag© 1
*************A**********************A******************************** ********
#
# Work Place Shell Sample makefile
#
# Copyright (C) 1994 IBM Corporation
#
# DISCLAIMER OF WARRANTIES. The following [enclosed] code is
# sample code created by IBM Corporation. This sample code is not
# part of any standard or IBM product and is provided to you solely
# for the purpose of assisting you in the development of your
# applications. The code is provided "AS IS", without
# warranty of any kind. IBM shall not be liable for any damages
# arising out of your use of the sample code, even if they have been
# advised of the possibility of such damages.
#
^***************************************************************A************
1 include .\wpshsamp.inc
# Dot directive definition area (usually just suffixes)
*****************************************************************************
.SUFFIXES:
.SUFFIXES: .c .obj .dll .esc .sc .h .ih .ph .psc .rc .res
******************************************** *********************************
# Environment Setup for the component(s).
^**********************************************************A*****************
SOMTEMP = .\somtemp
SCPATH = d:\toolkt21\sc
HPATH = d:\toolkt21\c\os2h
LIBPATH = d:\toolkt21\os21ib
1 if [set SMINCLUDE=.;$(SCPATH)] || \
[set SMTMP=$(SOMTEMP)] || \
[set PATH=d:\ibmcpp\bin;d:\toolkt21\os2bin; . ] || \
[set SMEMIT=ih;h;ph;psc;sc;c]
Iendif
!if [cd $(SOMTEMP)]
! if [md $(SOMTEMP)]
! error error creating $(SOMTEMP) directory
! endif
! else
! if [cd ..]
i error - Couldn't cd .. from $(SOMTEMP) directory
1 endif
Iendif
#
# Compiler/tools Macros
#
CC = $(CC) /Ge-
LINK = LINK386
LDFLAGS = /noi /map /nol /nod /exepack /packcode /packdata /align:16
DLLLIBS = $(DLLLIBS) som.lib
^****************************************************************************
# Set up Macros that will contain all the different dependencies for the
# executables and dlls etc. that are generated.
OBJS = myfile.obj myfolder.obj
£****************************************************************************
# Setup the inference rules for compiling source code to
# object code.
|****************************************************************************
.c.obj:
$(CC) -1$(HPATH) -c $<
.esc.ih:
sc -v -r $*.csc
all: myfile.dll myfolder.dll
#
# Specific Process Tag
#
myfile.ih: $$(@B).csc $(HPATH)\wpdataf.h
myfile.obj: $$(@B).c $$(@B).ih $$(@B).h $$(@B).sc $(HPATH)\wpdataf.h
myfile.dll: $$(@B).def myfile.obj myfile.res
$(LINK) $(LDFLAGS) myfile.obj,$@,,$(DLLLIBS),$*;
rc -p -x $*.res $*.dll
mapsym myfile.map
myfile.res: $$(@B).rc $$(@B).ih
rc -r $*.rc $*.res
myfolder.ih: $$(@B).csc $(HPATH)\wpfolder.h
myfolder.obj: $$(@B).c $$(@B).ih $$(@B).h $$(@B).sc $(HPATH)\wpfolder.h
myfolder.dll: $$(@B).def myfolder.obj myfolder.res
$(LINK) $(LDFLAGS) myfolder.obj,,$(DLLLIBS),$*;
rc -p -x $*.res $*.dll
mapsym myfolder.map
myfolder.res: $$(@B).rc $$(@B).ih
rc -r $*.rc $*.res
Files DINSTALL.cmd 03/22/94 14s51
/* */
call RxFuncAdd 'SysLoadFuncs 9 , 'Rexxlltil*, 'SysLoadFuncs’
call SysLoadFuncs
if SysDestroyObject("<MYFILE>") than
say ’My File Example successfully uninstalled,'
else
say ’Error, My File Example not uninstalled properly.'
if SysDestroyObject("<MYFOLDER>") then
say 'My Folder Example successfully uninstalled.'
else
say 'Error, My Folder Example not uninstalled properly.
Printed on 08/01/94 at 17s03
Pag© 1
/* V
call RxFuncAdd 'SysLoadFuncs'# 'RaxxUtil'# 'SysLoadFuncs'
call SysLoadFuncs
parse arg libdir
/* change following drive letter to your boot drive */
if (libdir * ••") then libdir = "C:\os2\dll"
’copy myfile.dll* libdir
’copy myfile.syra* libdir
’copy myfolder.dll* libdir
'copy myfolder.sym' libdir
if SysCreatoGbj ect { “MYFILE", "My File Example", "<WP DESKTOP*-"# ,
"SOUND 38 YES • OBJECTID=<M¥FILE>" ) then
say 'My File Example successfully installed.*
else
say 'Error# My File Example not installed properly.’
if SysCreateObject("MYFOLDER"#"My Folder Example","<WP_DESKTOP>"
"OBJECTID=<MYFOLDER>") then
say 'My Folder Example successfully installed.•
else
say 'Error# My Folder Example not installed properly.'
Printed on 08/01/94 at 17s03
1
Understanding the GPI
Exploring and Exploiting OS/2 Graphics
Kelvin R. Lawrence
IBMCorpo ration
Boca Raton, FL.
Todays Agenda
■ Quick <3 PI overview
■ A word ori presentation spaces
* Key concepts with working examples:
~ Geometric widelines
- Polygons, arcs and full arcs
- Coordinate spaces and transforms
~ Working with fonts
- Paths and ciipping
OS/2 Presentation Manager GPI. A
Programming Guide to Text, Graphics
and Printing. By Graham Winn.
Published by Van Nostrand Reinhold,
The following terms are trademarks or rigtetered trademarks of
the IBM Corporation in the United States and/or other countries.
• IBM
* OS/2 " ' . .. j
• Operating System/2 .
. Presentation Manager ■
. WtN-OS/2
* Workplace Shell
. The following terms are trademarks of their respective
companies.
♦ Windows
• Presentation Manager Programming
Reference, Volume 1. (Part of OS/2 Tech.
Library). S10G-6624
Reference Material
1 ■ OS2DF1 (OS/2 Developers) forum on
CompuServe
* Articles in PC Magazine by Charles
Petzold and others
■ Developer Connection News and
CD-ROM
What is the OS/2 PM GPI ?
x ■ GPI = Graphical Programming Interface
■ Rich set of graphics routines for
applications to utilize
■ Largely device independent!
m mm mm
Reference,,Materia
■ OS/2 beveloper magazine
• IBM International Technical Supppjil
Center "Red Books"
» Or»..„You can reach me (Kelvin) via:
- CompuServe: 72360,3554
- internet: lawrence@vnetibm.com
The GPI also prhvicles..^
■ A very comprehensive 2-D imaging
model.
» A lot more than we can talk about ip One
and a half hours!
But. J will be here all week so things we
don't cover here today we can discuss at
other times during the week (you can’t
get rid of me that easily!}.
You car) think of the GPI as providing
Various classes (or categories) of graphics
functions.
By combining one or more categories of
these functions we can q. u| i l^p iiSiilill|l
build sophisticated graphics into our
applications.
Fiirieflcm Classes.
■ The Gpi provides functions for:
- Building more complex shapes
► Regions
► Areas
. * Paths
► dipping
- Transforming data
- Translate
| Rotate
- Scale
* Shear
The Gpi provides functions for:
- Saving the data
> Metafiles
► Retained graphical segments
Manipulating text and fonts
The GPI provides functions for:
if- Setting/querying attributes
► Colors
* Fills, etc.
* Drawing basic primitives
► Lines, arcs and curves
► Boxes
► Polygons
* Bitmaps, etc.
Printing the picture
i Logically where the application draws
> 3 basic types:
- Micro cached (WipGetPS)
- Micro (GpiCreatePS - GPlf_MICRO)
- Full (GpiCreatePS - GPIT.NORMAL)
* Very close mapping to a device context
ittjh
< A sit of <^Pi concepts with examples
■ Concentrating on: w
- Drawing wideiines, fiiil arcs, partial!
arcs
- Drawing polygons
- Coordinate spaces and transforms
- Generating a complex clip path
- Drawing a 256-color bitmap
- Performance
Offers a variety of PAGE units
IPUPEL3
- PU_LOMETRIC (0.1 mm)
- PUJftMETRJC (0.01 mm)
- PU„LOENGLISH (0.01 ipchis) I
- PU„HIENGLISH (0.001 inches)
- PUJTWIPS (1/1440 inches)
- PU_ARBiTRARY (matches device)
Example: TEST1.EXE
Tirnittves
Basic attributes (some examples)
- GpiSetColor( hps, CLR_RED)
- GpiSetBackColor( hps, CLR_BLUE)
- GpiSetBackMix( hps, BMLOVERPAINT)
- GpiSetCurrentPosition( hps, pptIPoint)
- GpiSetLineType{ hps,
LINETYPE_SOLID)
- GpiSetMix( hps, FM_QVERPAINT)
- GpiSetPattern( hps,
PATSYM HALFTONE)
■ Simple* lines
- GpiLine( hps, ppdintl)
- GpiPolyLine( hps, ICount, aptl Points)
- GpiPolyl_ineDisjoint( hps,
ICount, aptIPoints)
» Draws one or more lines, starting at the
current position or from first coordinate
(in the case of disjoint lines)
■ Geometric widelines
- Generate using a path
- Can specify line end style
- Can specify line join style
(f
-Example: WIDEI_N.EXE
■ Wider lines
- GpiSetLineWidth( hps,
LINEWiDTH_THiCK)
- GpiSetLineWidthGeom( hps, IWipth)
- GpiSetUneJoin(hps,LINEJOIN_ROUND)
- GpiSetLineEnd( hps,
LINEEMD_ROUND)
Geometric line widths need to he used
in conjunction with a path to generate a
nfrodyciji.gr Some <3PI Primitives
■ Drawing Polygons
- Use GpiPoiygons'
1 - High speed polygon rendering
~ Draws one or more filled polygons
- No need to generate using paths or
areas
-Polygons can be disjoint, i.e. not
connected
- Example: POLYGON.EXE
Full arcs
- Generate using GpiFullArc
|jCan adjust using QpiSetArcParan?4
Example; CIRCLE.EXE
■ Various coordinate spaces are provided
- World
.--■Model/
- Page
-Device
■ Different transformations can be applied
at different stages of the coordinate
space pipeline
Partial arcs
- Generate using GpiPartialArc
-Can adjust using GpiSetArcParam^
Available transforms
- Model transform
► GpiSeiModelTrmsformMatrix
- Viewing transform
► GpiSetViewingTransformMatrix
- Default viewing transform
*- GpiSetDefaultViewMatrtx
- Device transform
► GpiSetPage Viewport
Viewing Limits
Graphics Fteldi
Model Xform
ililiiii
iillpifil
Model Xforrp
Viewing Xform &
Default Viewing Xform
m$pm
Page Viewport .
• (Device Xform) |
Viewing Limits
• Clip path - world space
- Inclusive/Inclusive, can include curves
■ Viewing limit A model space
- Inclusive/Inclusive, rectangular
» Graphics field - page space
- Inclusive/Inclusive, rectangular
* Clip region - device space
- inciusive/exciusive, one or more rects.
- Device dependent
m
Seal i ng/Ref lection use Ml 1 & M|2
Transforming a point
Note, if working in PELS, by default, all
transforms start Cut as identity.
Otherwise, the default transforms
provide the mapping from world space
to device space.
fxMH
fxS
mmm
fxl
IM31
IM:
Coordinate Spaces and Transforms
; ■ Translation
- Adjusting position where object is
drawn
- Example: XFORM1.EXE
viewing transform
■ Side note: For speed, the graphics
engine caches the following transfr - 1
-World to model
- Viewing transfr
- Default (global)
- Page to device
- World to device
- Device to world
- Plus, tRU of last two transforms not in
above iist
With OS/2 are included a selection of
image (bitmap) fonts and Adobe Type 1
(Outline) fonts
Introduction bitmap vs. outline fonts
Common font teriminology
Querying available fonts
Creating logical font*
Character attributes
Calculating spacing
Outline font text as clip-paths
Vector markers from an outline font
Other fonts can be added to the system
dynamically
■ Should only be used for "on screen"
displaying of text
* Are not scalable (set of fixed point sizes)
* Their size is approximate for general
display resolution
- Limited flexibility
■ Decide up front if your application is a
"screen only" application or if you are
going to want to send output to other
devices such as printers; and plotters
• This will dictate the way you do your'
font handling in your application
Genera) use
-Screen
- Printer;* etc •.-
Can be sized accurately with graphics
Flexible uses
^'j^MlUnes
- Fills
- Transformations (rotate, shear, etc.)
- Clip paths, etc«
Device fonts are provided by a device or
a device driver
- IMatch value will be negative
- Not available for use on other devices
A Generic font is a system managed font
that can be used on any device
- IMatch value will be positive '?
- Can be an image or an outline font
Can achieve a proper transfer of what’s
on the screen to the printer
Offering the User a List of Foots
i ■ The system fortt dialog
vr ’- Displayed using WinFontDlg(...) /
- Provides a uniform way to present lists
of fonts to select from to the end user
- Removes work from the application
ill?
table Foot Interface (IF!
The OS/2 graphics engine provides an
installable font driver interface
Font drivers for different font
technologies can be written and added
to the system dynamically
An Adobe Type Manager font engine |j
comes with OS/2 as standard
WinFontDig (Minimalist Approach)
FONTDLGffd;
CHAR pszlitle[17] = "Font Dialog Test”;
CHAR pszFam 08 yName[FACESIZE] = "\0";
nnemset( &pfd, 0, sizeof( FONTDLG ));
fd.hpsScreen = fopsCBsemt;
fdcbSize = sizeof( FONTDLG );
fd.pszFamiSymame - pszFamBByName ;
fd.pszTitle = pszTitle;
fd.usFamifiyBuffLen = FACESIZE;
fd.fxPoimtSize = (RXED)O;
fd.cIrFore = CLR_BLACK;
fd.cIrBack = CLRWHITE;
fd.pszPreview = ’’SampSe Text";
fd.fi = FNTS_CENTER;
WinFomtDBg( iiwndFrame, hwndFrame, &fd );
Example: F0NT1.EXE
Key things to provide in fattrs parameter
- Size (of fattrs structure)
- Facename
- Codepage
► Non language font use 65400 - Le.,
dingbats
- Image fonts
► MaxBaseiineExt, lAveCbarWidtb
- Outline fonts
» FATTRS FONWSE OUTLINE
■ Query available font?
■ Select required font
■ Call GpiCreateLogFont
■ Select the character set as the current
one •
- Set character box size (if outline font)
* Example: FONT1.EXE V
displaying the Text
■ WinDravyText (display only)
■ GpiCharString
■ GpiCharStringAt
■ GpiCharString Pos
«GpiCharStringPosAt
Character Mode
• Set Using GpiSetCharMode
' - Mode 1 (CM_MODE1)
- ignores all attributes except direction
... Mode 2 (CM_MODE2)
- Uses character shear, box, angle and
direction, but the characters
* themselves are not sheared, rotated
llillMiBIll Jlllllll JlllllllI
- Mode3(CM_MODE3)
~ Obeys all attributes
- Outline fonts only
Set using GpiSetCharBox
Used for sizing outline font characters
Defines horizontal and vertical spat#
occupied by an em square
Set u§iag GpiSetCharDirection
Available directions
-chdirntdefault
~ CHDJRNJJEFTRIGHT
- CHDiRN_RIGHTLEFT
- CHDIRNTOPSOTTOM
BiMlN BOTTOMTOP ,• •
Set using GpiSetCharAng le
Defines angle at which text is drawn
- I.e., defines the angle of the baseline
Actual appearance of the text is
determined by the charaetlr ji o||i ll
Set using GpiSetCharShear
Appearance of the text is dictated by the
current character mode
■ Set using GpiSetCharExtra
• Defines extra space between character
cells J It 11| 111 . . /•••• -. ..A
Character Gotor- arid Mix
; ■ Can use regular color/mix functions
- GpiSetColor
- GpISetBackColor
- GpiSetWIix
- GpiSetBackMix
■ Can adjust just the character bundle
- GpISetAttrs (PRIM^CHAR)
■ TEST1.EXE - A program that
demonstrates character manipulation
■ For irn|3f fonts
Oytlifie Foot Sizing -Device Coords
u ■ Some general typesetting terminology
- 12 points = 1 pica
- 6 picas * 1 inch (actually 0.9661
inches)
- 72 points b 1 inch
- 1 inch = 2.54 cm
- 1 inch = 0.0254 m
For outline fonts
■ Do NOT use IMaxBaselineExt
- May be wildly inaccurate
- Consider adding an integral sign to a
font
* Good first approximation is 1.2 x point
size
■ However, depending on point size, line
spacing should be chosen for a visually
pleasing look
Outline Font Sizing - Device
1. Choose point size required
2. Use following algorithm
pt = selected point size
| ctev s device graphics resolutions
(peis/meter)
mi * 0.0254 (meters/inch)
• •••• ip « 0.9961 172 (inches/point)
Set character box to: pt * dev * mi * ip
Fonts., Paths aod Qlipping
Define a path
Make clip path using GpiSetClipPath'
- Example: CLIPFNT.EXE
Presentation Parameters
■ Quick and easy way to change the
default font for a window or control
- PPFONTNAMESIZE
;P - e.g., 12.Heivetica
■ Set using WinSetPresParam
• Can be a little more exotic
ilBIlliilli. Hel vetica.bold.ital ic
Fonts and Sector Maikms
Two examples
- Displaying the contents of the palettf
| Animating the palette
- Example 2: PMPAL.EXE
- Example 2: PALETTE.EXE
Bitmaps
' Specific case Study
-Load a bitmap from disk
- Read the palette from the bitmap
- Display and size the bitmap
- Example: BITMAP,EXE
Perkwmmw^
■ Depends upon efficiency of
- Application
^presentation driver
- Hardware
• Can use large arrays of points if needed
* Understand underlying presentation
driver model
- Example application that uses
- Disjoint polylines
-Polygons
- Animated palettes
-TttreadS V •-
-Transforms
- Performance concepts
* MOUNTAIN,EXE (A mountain generator)
AD11
Developer Offerings Presentation Overview
OS/2 Developer Tools
► Developer Tools Strategy
► Developer Connection Demo
Barbara Britt
Personal Software Products
Boca Raton, Florida
► OS/2 Toolkit Demo
► OS/2 Multimedia Toolkit Demo
► Device Driver Kit Demo
Migration Strategy
► HyperWfse Demo
► Overview of WP - OS/2 Tools
9
OS/2 Developer Offerings
Strategic Directions
WortdVifafe
« Delivery ©f developer fools, service,
and support to an international
audience of developers, ISVs, and
IHVSo
• of feats Sc .
• Delivery of 2.x and OS/2 for PowerPC
developer tools, documentation, beta
code, and advance information to the
developer community on a timely
basis.
llippc ••••-•• *
® Support of Industry Standards
(GORBA, Tool Interface Standards
(US) Committee, OSF, ISO, etc.)
7/28*4
OS/2 Developer Offerings
Strategic Directions
Encourage application development
on IBM Personal Operating Systems
Independent Software Vendors (ISVs)
and Application Developers
One year of updates
Mg? Technical
jip Support
CompuServe,
||P' and Internet
$199
(US)
THE DEVELOPER CONNECTION FOR
OS/2
'.I
BY THE DEVELOPERS
• :K:
-mtmM "
-BOOK TOVIEWS Y •-
ENCE NEWS
-80$ NUMBER DIRECTORY
TOOLS:
- LATEST DEVELOPERS TOOLKIT
- IBM BETA CODE
- THIRD-PARTY BETA CODE
- LATEST DEBUG KERNELS
- DEMOS/PREVIEWS OF NEW TOOLS
- ONLINE BROWSER
INFO:
- TECHNICAL LIBRARY
- RED BOOKS
- WHITE PAPERS
- TOOLS & PUBS CATALOG
- APPS & PUBS CATALOG
THE DEVELOPER CONNECTION FOR OS/2
CONTENT
- Bit-maps
- Communications Tools
- Development Tools
- Editors
- Multimedia Tools
- OS/2 Beta's and Demo
- Productivity Tools
- Service
- Source Code
- Test Tools
- On-Line Documentation
- LAN Systems
- Data Base Products
THE DEVELEOPER CONNECTION FOR OS/2
CATALOG FEATURES
► Complete Content List
► Tool - Option
“Try Product
- Install Product
Ca
o „
3
- information
- Remove Product
(A
Catalog
► Zoom
► Expand / Collapse
► Product information
-Mew
- Updated
Q O _
A
7\
\ -cm#* J
72094
THE DEVELOPER CONNECTION FOR OS/2
BROWSER FEATURE
► Search
- Multiple keywords using
boolean operators: AMO,
OR, XOR, & MOT
“Wild card support
► Configurable
► Error Checking
b> Workplace Shell
Integration
- Drag and Drop
> Desktop
> Printer
> Create another folder
> Browser Folder
- Logical Categories
- Search all objects in
folder
► Language Sensitive Editor
- Context sensitive pog>up
menus
- Spell checking
THE DEVELOPER CONNECTION FOR OS/2
SUPPORT
► Electronic Support
- Compuserv
► ON GO OS2DF2
- DevCon CFORUM
► OS/2 BBS under
Talklink
- internet
» devcon@
vnetsbm.com
f
7 \
«Sptcft2pr»
& ^
v_
THE DEVELOPER CONNECTION FOR OS/2
ON-LINE DOCUMENTATION
► Previous issues of
Developer Connection
Mews
► Device Driver References
► REXX References
► SOy References
► PM Programming
References
Tools Reference
► IFF Reference
► OPEM DOC
► Communications
Manager’s Reference
► IBM Red Books
► IBM Application Design
Guide
► White Papers
H
OS/2 Toolkit
Enable development of OS/2 compatible program products by IBM
| internal and third party software development
Independent and IBM software developers
Technical
Reference Library
Technical Support
via OS/2 Service
Organization and
BBS (future)
$139
(US)
BUILD TOOLS AND DEBUG SUPPORT
BUILD TOOLS
- NMAKE
-MKMSGF
- MSGBIND
-EXEHDR
-MARKEXE
-IMPLIB
-PACK
- LINK386
- FWDSTAMP
DEBUG SUPPORT
- Default Kernel
UT1LSHES, LIBRARIES, AND HEADERS
ON-LINE INFORMATION
/ : : O BAMTOJ£S \
/HEXX SAMPLES \
/ Cn [MSKi- \
MOL5rtM6blASA«fil£S\
C SAMPLES
► SOM INHERITANCE (ANIMALS)
► BIDIRECTIONAL (BIDJ)
, ► CLIPBOARD (CUPBRD)
Y TIMER SERVICES (CLOCK)
V PM DIALOG BOX (DIALOG)
“V DYNAWiC UNK LIBRARY ABI (DLL API)
L DIRECT MANIPULATION (DRAGDROP)
/► EXTENDED ATTRIBUTES EDITOR (EAS)
► MULTI-THREADED PM SAMPLES (GRAPHIC, HANOI)
► MIGRATE 16-BIT TO 32-BIT (IMAGE)
► INFORMATION PRESENTATION FACILITY (IPF)
► BITMAPS IN GRAPWC APPS (JIGSAW)
► NAMED PIPES (NPIPE)
► PALETTE MANAGER (PALETTE)
► PM PRINT (PRINT)
► 32-BIT QUEUING (QUEUES)
► MUTEX AND EVENT SEMAPHORES (SEMAPH)
► MULTIPLE SORTS USING THREADS (SORT)
► SAVE AND EDIT TEXT FILES (STYLE)
► PM TEMPLATE (TEMPLATE)
i Multimedia Libraries &
Headers
i Multimedia Samples
® String Test
® Clock
® AVC I/O Procedure
Installation
® Duet Player 1
® Duet Player II
• Audio Recorder
• Caption Create Utility
• Caption Application
• Movie
« Control File Template
SUluStimedSa Subsystem Development Samples
• Media Control Driver Template
• Waveform Audio IWledia Control Driver
® CD Media Control Driver
® Media Control Driver Command Tables
® File System Stream Handlers
® Stream Handler Resource File
• Toolkit Control Files
® Case-Converter I/O Procedure
® M-Motion I/O Procedure V ,
• UStimotion I/O Procedure ^
DEVICE DRIVER SOURCE KIT
m Announced 5/25/93
e $199.00 for full year
• includes one year of updates
• includes one year of technical support
• Each CD-ROM is cumulative
■ Order by calling 1-80O-6DEVCON (633-8266)
prt 7-28^94
Application Migration Strategy
Hyperiv/se an Online Editor for OS/2
Hyperw/se- MultiMedia
► FEATURES
- Key productivity tool for OS/2 App
Development
- Part of migration strategy
► Cross platform access to help/integrated
on-line information
- HyperWrite, IFF import, SookMaster import,
INF/HLP native export, SPF export, BookMaster
export, Install program, IPF/WIN, on-line
documentation
ADI 2
Agenda
ADI 2: OS/2 Debug Kernel
"Hands-On Lab"
* The "Debug Kernel"
► Very Brief Overview of System Architecture
► Debugger Commands
► More information
Dennis Sposato
IBM Corporation, Boca Raton FL
OS/2 Technical Support
The "Debug Kernel"
► OS2KRNL
► Communicates via COM Ports
► Defaults
9600 baud
8 data bits
1 stop bit
Ho partly bits
COiyi2
The "Debug Kernel"
■ Local Debugging
IgwHuM
Null Modem Cable
PPPP
MUT
Machine Under Test
Debug Terminal
The "Debug Kerner
The "Debug Kernel"
■ Remote Debugging
■ KDB.INI - Initialization file
- Used to change defaults
ie:
.b 2400! 1 Set speed on Coml
© 3FC 1 Set DTR for Coml
g Go
■ WARNING
No carriage return fine feed at end ©f file
Very Brief Overview of System Architecture
Very Brief Overview of System Architecture
■ Protection
Privilege
Description
Address Mapping (paging)
a Addresses
Selector or Segment
■ Selectors
Index into Descriptor Tables
■ Descriptor Tables
Describe memory
GDI DG Command
LDT DL Command
Offset
Very Brief Overview of System Architecture
» Call Gates
Prfvfege Level Transitions
Debugger Commands
G
BP
VS
VL
BL
BR
DL
DG
Set Breakpoint
Set Vectors
List Vectors
List breakpoints
Set debug register
Display LDT
Display GDT
Debugger Commands
► ? Display command list
► .P Display Process List
► .PB Display Blocked Process list
► R Display registers
► „R Display Registers at Ring 3
► LN List Near Symbol
► .? Display external command list
► DB Display bytes
► DW Display Words
► DD Display Double Words
Information
For more information on system architecture see:
"Intel486 Programmer's Reference Manual"
For more information on OS/2 architecture see:
"The Design of OS/2 by Deitel & Kogan"
For more information of how to debug in an OS/2 environment
there is a class available from IBM called "OS/2 Hang/Trap
Analysis Workshop", PI082. Call or Internet mail to:
Judy Lee (407) 443-0488
!eejudy@bcrvm1 .vnet.ibm.com
C Set ++
Agenda
- The C Set ++ Family
- Target Audience & Key Messages
- C Set ++ Success Stories
- Detailed Product Overview
• C Set ++ V2.1
- Competitive Advantages
- Future Releases
"We provide the preferred language-centered C/C** environment for developers
who are building applications using a standalone or LAN-attached workstation,
targeting a variety of runtime environments."
New functions; Enhanced functions
Expanded segment coverage
Idmplementary functions •
Expanding number of supported platforms
CS&i ++ Products
C Set ++ for OS/2 V2.1
® Latest version of our full function product, targeted to industry
professionals
Future Releases:
C Sot ++
Product Overview
C Set ++ V2.1
C76*+ Tcote
* C/G4+ Comber •
»Debugger
*EXTRA
* Browser
«Standard CfasS library
* Collection Class Library
* gtihartcHci out Class Library
* Kasa:Se« Tool
V2.1 • I #11111111
W<W«»W*/2 Vt-1
■MHiMHi
C Sot ++
Target Audience
OS/2 Application Developers
► C Set ++
- Enterprise professionals
► MIS
► Development teams
- ISV professionals
C Set ++
Key Messages ~CSei++
► Allows developers to create ’'mission critical" applications
- "More than just a slick user interface"
- Every release undergoes thorough testing (more than 10M lines of test code)
- Content of compiler and related tools is state-of-the-technical-art
- "Created by developers for developers"
► Allows developers to keep pace in a rapidly changing, highly competitive environment
- Programmer productivity increased through use of object-oriented paradigm
- Class libraries provide a common base from which reusable parts can be built
Generates highly optimized code
- Global optimization (with no "unsafe" optimization)
- Code scheduler allows developer to exploit i486 and Pentium* instruction sets
- Function inlining
► Ss backed by Service and Support second to none
- Track record established with C Set/2
- Immediate access to C Set++ development team
- "We know C and C++" (team creates compilers for all hardware platforms)
(’) Trademark of the Intel Corporation
C Set ++
Success Slones
^ C Set ++ has 40,000 customers Worldwide
►- C Set ++ is used to create:
- Popular Desktop Applications
- Object Oriented Client/Server Applications
C Set ++
Success Stories
► Popular Desktop Applications
- Lotus 123 for OS/2
- Lotus Freelance for OS/2
- Lotus Notes
- Lotus AmiPro
- Describe
- DB2/2
- OS/2
C Set ++
Success Stones
» Object Oriented Client/Server Solution
- Case Study: A Credit Company in US
600 GB Host
data base
7500 OS/2 V2.1
Clients
Client code written
Iflii in C Set ++
"We could not
have done this
without C Set ++
and OO”
Product Overview - C Set ++ V2.1
C/C++ Compiler
✓ A State-C:b tbs-C«ft.
robust standards¬
conforming compiler
for 0 and C++
applications
C++ Class Browser
v A visual tool for
working with C++
class structure and
inheritance
Execution Analyzer
v A visual tool for
analysing, timing, and
tuning compleH C and
C++ applications
Developer’s Toolkit V2.1*
✓ Utilities (®.g. linker, make)
✓ PM resource tools
✓ 0/S header file*
* new feature for Version 2.1
C++ Class Libraries
v PM User Interface classes
(including DragDrop classes)*
✓ Base set of C++ classes
from which reusable
objects can b© derived
PM Debugger
* A visual tool for
debugging C and C++
applications
WorkFrame/2 V2.T
v' Full WPS integration
Open and configurable
integration framework
v Seamless integration
of reultiple/d itferent
E/C/D tools
. Reject organiser
✓ Launches AD tools
C Set ++
C/C++ Compiler
> 32-bit C/C++ compiler generates code targeting OS/2
► Generates highly optimized code
- No "unsafe" optimizations performed
► C++ compiler supports:
- Templates
- Exception handling
- Pre-compiled header files
► C compiler now supports
- Virtual Device Driver (VDD) support
- Pre-compiled header files
- performance improvements
>32-16 bit coexistence
> Conforms to:
- ANSI/ISO C (NIST validated)
- ANSI C++ draft
- Japanese MIA
> Compatibility
- Cfront
- Microsoft
IS
C Set ++
C++ Class Libraries
► Assists developer to:
- develop production applications quickly
- reuse existing classes across many applications
- create PM applications without the need to know the details of PM
- create a consistent set of classes derived from a common base
►- User Interface Class library
- Encapsulation of OS/2 PM
- CUA '91 "Look and Feel" support
- New Drag/Drop classes
► Collection Class library
- Abstract data type building blocks (e.g. stack, tree, etc.)
- Utility building blocks (e.g. ordering, equality, access, etc.)
► Standard Class library
- iostream
- task
- complex
C Set ++
C++ Class Browser
► Assists developer to:
- search applications for specific components
- view components and their relationships
- understand code
- edit original source code
► Post-compilation static analysis
►- Graphical user interface:
- List windows
- Graph windows
- Text windows
► View class structure and inheritance
C Set ++
PM Debugger
► Assists developer to:
- debug PM applications
- debug applications with multiple threads
- monitor PM message queue
► Full graphical user interface
► C++ support features
► Source Level Debug
«- Step Mode Debug
- Graphical window analysis
C Set++
Execution Trace Analyzer
► Assists developer to:
- Time and tune complex applications
- Analyses program hangs
- Monitor multi-thread interactions
- Understand code
► Monitors program execution
Presents data in graphical format
- Statistical summary
- Timeline analysis
- Execution density
- Call trace & Call tree
C Set ++
Workframe/2*
f=\
> Assists developer to:
- Develop code using their own choice of tools
- Mix and match their favorite vendors’ tools
- Combine tools through a simple, yet powerful user
interface
Open tools integration shell
- Full WPS integration
- Published interfaces
- Supports DOS, Windows, or OS/2 tools
- Multiple vendors supporting
Project organization
- Manages project files
- Project profile
- Action log
> Resource tools
- Graphical build tools
- PM resource tools
- Libraries and utilities
C Set ++
Support and Service - C Set ++
► CompuServe
- preferred non-defect support mechanism for OS/2
- free trial membership included with product
- converse directly with C Set ++ developers and planners
- download files
► internet
- converse with developers across the Internet
- download files
WS i AH* ■HAT-.'tj.
C Set ++
Support and Service - C Sei ++
► Fax service
- 416-448-6057
- direct to developers/planners
Other Resources
- Service Manager - Maxine Houghton (MAX @ TOROLAB6)
- Planning Manager - Alistair Rennie (ARENNIE @ TOROLAB6)
- Marketing Brand Manager - Roy Mular (MULAR @ TOROLAB2)
C Set ++
Support and Service - C Sei ++
Additional Offerings
> Communications
- C Set ++ Newsletter
- Mailings through our customer database
- Electronic postings
► Customer feedback opportunities
- Worldwide beta programs
- Evaluation drivers
- Frequent product surveys
- Customer satisfaction surveys
Marketing Support
- Customer Briefings
- Brochures, Direct Mail
C Set ++
Competitive Advantages
» c Sot ++'$ primary competitor is Borland C++ for OS/2
► C Set ++ has maray advantages:
PM
Classes
EXTRA j
ANSI
Standards.'
■ ' Open ' , Service/
i. IDE J v Support
C Set++
-X<«vX , y. , X , X<>X , X , X«-XswX , XwXwl , lsvXsw'.-XOXw'.s««'X"lwX«*X«s , X<wWw;vXs«*i
Competitive Advantages Notes:
► Fastest EXE’s: C Set ++ produces the fastest executing applications for OS/2 2.x. Additionally, the
design point of the compiler focuses on the production of the highest quality code, with SAFE
optimizations. This is a compiler that customers can trust with their mission critical code.
► PM Classes: Only C Set ++ provide a complete set of User Interface class libraries for Presentation
Manager. These classes offer the most productive way for creating OS/2 GUI applications.
► EXTRA: C Set ++ is the only product available for OS/2 to provide a complete visual performance
tuning tool.
► Solid Debugger: C Set ++ customers report that IPMD is the most stable, powerful debugger
available for OS/2.
► Service and Support: IBM provide frequent service updates for C Set ++. Other competitors do not
provide this level of support. Also. IBM has an entire team devoted solely to Service and Support.
We are committed to OS/2 developers.
► Open IDE: Workframe/2 allows developers to integrate their own tools into the development
environment very easily. Because C Set ++ is running on OS/2, these tools could be DOS.
Windows or OS/2 based.
ANSI Standards: IBM is an active participant on the ANSI C++ Committee. C Set ++ has set a
standard for being compliant with the ANSI definition of the language.
C Set ++
Migrating to OS/2
>-16 bit to 32 bit
- C Set ++ supports 16 to 32 bit and 32 bit to 16 calls
- Allows reuse of existing 16 bit code within new 32-bit
applications
i- Compiler Options
- Support for non-ANSI extensions (Microsoft) in the C
language
Recompile for 32-bit
- C Set ++ will recompile existing source to 32-bit
C Set ++
C Set ++ Delivers
Benefits
"Functions
and
Features"
Clleni/Server Development
Futures Overview
C Set ++
C Set ++ for OS/2 Version 3
Compilers (C/C++)
- Compiler Performance
- Optimization (Size and Speed)
Linker
- New linker!
New Browser
- Performance
SOM
- Full Direct to SOM support (compiler and tools)
Runtime Enhancements
- Performance Improvements
Class Library Enhancements
Visual Builder
LPEX Editor
- Syntax highlighting, programmable
Integration
- Improved tool-tool integration, integrated install
...
C Set++
C Set ++ for WPOS/PPC
C/C++ Compiler
Runtime
Debugger
Collection Classes
User Interface Classes
lostream Class
- Natively Hosted
- Delivery will evolve through Alpha and Beta
SDKs
- Over time Function will converge with C set ++
for OS/2
C Set ++
Windows 32BH Support
Proposed Strategy
- Provide OS/2 hosted cross-compile to Win32s
and Win32
-» Natively host:
. Debugger
« Collection Classes
o User Interface classes
C Set ++
Futures Overview
Leading Object Oriented Tools
Best of Breed Class Libraries
Full Enterprise Client/Server Support
C Set ++ is the premier choice for 00
development on OS/2 !
CC02
CC02 IBM C Set++
Debugging Tips and
Techniques
David Kolpek
SBM Lexington
Subject overview
■ History and design goals
- Function overview
■ Usage notes
« Release 3 Enhancements
■ Advanced topics
C Set++ Debugger
Design goals
Function summary
■ Debug C Set++ C and C++ code
■ Debug C Set/2 C code
« Run as a PM application
- Point and shoot mouse operation
■ Unofficially support 16 bit debugging
■ Run on all OS/2 2.x releases...
- Source views
- Execution control
- Breakpoints
■ Monitors
■ Expressions
* Message queue
monitor
- Exception handling
Call Chain
Storage
Registers/flags
Debug session controls
Customization
Window analysis
Toolbar buttons
Heap checking
C Set++ Debugger
C Set++ Debugger
Source Views
Execution control - Step
« Multiple view support
- Notebook (C++)
- Source view
- Disassembly
- Mixed (source + disassembly)
® Highlighted lines and breakpoints are reflected in all
open views
= Executable lines are colored blue, non-executable Sines
are black
- Step over
• Stops in called function if BP hit
• Also available on mouse button 2
- Step into
• Follows execution into functions
- Step debug
• Steps into if debug info present, steps over if debug
Info is not present
- Step return
• Runs through next return statement
- All threads execute when stepping
C Set++ Debugger
C Set++ Debugger
Execution control - Run
Breakpoints
- Run - allows all enabled threads to execute. Control
returns to the debugger when:
• The program terminates
• An enabled breakpoint is hit
• A program exception occurs
• The user interrupts execution
- Run to location
- Jump to location
-Halt
- Restart
- Hide Debugger on Run*
■ List Window *
■ Line- Sine number
* Address - address in disassembly
» Function - function name
® Load- when named DLL is loaded
■ Change address - memory change
- Expression *
- Address
» Modifiers
- Thread sensitivity - default = all threads
- Condition - when expression is true
- Pass counts - from/to/every
- Deferred - Activated when DLL loaded *
C Set++ Debugger
C Set++ Debugger
Monitors
Monitor Properties
. Display program data constructs
- Single valued scalers, pointers, arrays, structures,
expressions, classes
- SOM classes *
- Monitor formats
- Data popup * single data item
- Private - collection in secondary window
- Program - collection in primary window
- Local variables
- Storage - monitor expression in storage *
« Enable/disable
B Context - part, thread, line number
» Representation
a Expand/coSSapse/dereference
» Popup duration
C Set++ Debugger
C Set++ Debugger
Expressions
■ Creation
- Type in the monitor expression dialog
- Highlight in source view and click
■ Operands
- Variable , constant, register
» Operators
- Subset of the C/C++ language (including typecasting)
- Mo function calls or assignments
Call Chain
. Lists all active functions for a particular thread
. Double click on a name to open the program view
. One call stack window per thread
- Displays :
. remaining stack size *
® stack frame size *
• return address *
. esp *
. ebp *
C Set++ Debugger
C $et++ Debugger
Storage
a Multiple storage windows
■ Actively monitors contents
» Flat and/or segmented addresses
■ 14 styles available for viewing data
■ Monitor an expression in storage *
C Set++ Debugger
Debug Session Control
■ Threads
- Enable/disable threads
- Display the state of each thread
- Components - structural view of program
• - executables (exe,d!ls)
• 1 -files
• 1 -functions
* Select files to view
- Access other debugger windows
C Set++ Debugger
Registers
- Processor registers and flags
- Flags displayed individually
■ One set of registers per thread
■ Register and flag values may be modified
C Set++ Debugger
Inheritance view
■ List of classes
* Graphical depiction of the C++ class hierarchy
■ Class definitions
C Set++ Debugger
Window analysis
« Displays both graphical and textual information for all
windows
9 Shows the relationship between windows
Message queue monitor
* Displays PM messages associated with a PM
application
H Presents formatted messages in a list as they occur
■ Controls:
- Message information
- Format of message parameters
- Which messages are monitored
C Set-M- Debugger
C SeH+ Debugger
Exception Handling
Heap Check *
0 Choices:
- Examine/retry
- Step exception
- Run exception
- Exception filtering *
« Finding memory overwrites
- Exceptions in malioc and free (heap related)
- Procedure:
- Compile option: /Tm+
- Select "Heap check when stopping" menu item
- Set breakpoints in program
- Run to breakpoints or step
- Heap checked for corruption at each breakpoint and
step
C Set++ Debugger
C Set++ Debugger
Other Enhancements
Customization
■ Color support *
« Scroll to line number *
■ Include file dialog *
■ Mew Source file dialog *
* Source window properties
- View priority and disposition
- Threads to display
* Default data representation
■ 'Save window positions' menu item
■ 'Autosave window positions' menu item *
* Monitor properties
- Location, duration, context, enable
» Saved in 8PMB.,@4S
C Set++ Debugger
C Se?++ Debugger
Usage notes
"C" coding notes
» C coding notes
® Locating the source file
« Startup and program profiles
» The mouse pointer
■ Finding the application
a DosStartSession errors
« OS/2 2.1 notes
■ Others
« Compile with /Ti /O- /G3. Link with /Be
- Tabs in source: use SET PMDTABGRI0=5
■ Multiple C statements on a line:
- Breakpoints can only be set ©n the first statement
- "Step" executes all the statements
* Can debug "included" code
C Set++ Debugger
C Set++ Debugger
Locating the source file
* The name stored in the EXE (from icc Sine)
B The directory containing the EXE
■ The PMDPATH environment variable
■ The current directory
C Set++ Debugger
Program Profiles
- information saved:
- Program name and timestamp
- Breakpoints
- Monitors (data, storage, registers, stack)
- Views
■ Saved when:
- Close debugger
- Starting new program
■ Saved in <program name>.@4R
- 'Enable/Disable Program Profiling' menu item *
C Set++ Debugger
a Command line
- IPMB <args> <debugee name> <parms>
- args
* -p+ Use program profile
* -p - Don't use program profile
* -l Debug initialization code
a The debugger normally runs the debuggee to MAIN.
Use -i to stop in the initialization code
C Set++ Debugger
The Mouse Pointer
a Indicates two wait states
- Clock only: the debugger is busy
- Clock + rectangle: the debuggee is busy (may be
waiting for user input)
a Finding the application
- Use Ctrl+Esc to display the OS/2 Window List
- Select the debuggee from the list (displayed as
"Debug Appl - <name>"
C Set++ Debugger
DosStart Session Errors
OS/2 2.1 Notes
■ Occur on startup of debugger
a More extensive error checking when the trace option is
set
■ Error codes found in Toolkit lnformation=>CP
Reference->Errors
- RC=2: a DLL referenced by the app could not be
found
- RC=127: a function in a DLL could not be found
- RC=182: invalid ordinal - usually caused by picking
up a different level dll than was used to create an
import lib you linked to.
C Set++ Debugger
Others
■ Using MSGBIND destroys debug information (open
problem)
■ Do not have the debugger and Extra active at the same
time
■ Shut down when MMPM/2 is installed: Use synchronous
PM debugging mode or deinstall sound (OINSTSND)
■ The OS/2 auto-lockup feature will hang the system if it
activates while IPMD is active in synchronous mode
■ Do not try to debug system modal dialogs
■ PM Resource interlock and DosBebug errors
- Caused by OS/2 system semaphore contention
problem.
- Seen on OS/2 2.1 and OS/2 2.0 with service pack 2
installed
- The fix:
. Install C Set++ CSD CTU0002
• Install service pack 1 for OS/2 2.1 or request the
selective fix to AFAR PJ09240
C Set++ Debugger
Advanced Topics
* PM Debugging
■ Breakpoints in Oil's
■ DLL's called from REXX apps
■ Child processes
■ Multithreaded apps
= System hooks
■ Workplace Shell programs
C Set++ Debugger
C Set++ Debugger
PM Debugging
■ No special preparation - automatic detection of PM app
® The single system message queue affects how PM apps
relate to each other
- PM Debugging mode: refers to the different means by
which synchronous message dependencies are
handled when the debugger has control
- When the debugger has control, no messages are
passed to the debuggee (no repainting)
C Set++ Debugger
Asynchronous Mode
■ The debugger responds to messages on behalf of the
debuggee with a default response - prevents the queue
from locking up
■ Other PM applications behave normally
■ Use when messages to the debuggee are not critical
C Set++ Debugger
Synchronous Mode
® Keyboard and mouse messages for the debugger are
processed, but those for other applications (including
the debuggee) are not
■ Other PM applications will freeze when a synchronous
dependency is hit
■ Required for DDR type applications
C Set++ Debugger
DLL Debugging
- Set a Load type breakpoint to stop when the desired
DLL is loaded. Then set an entry breakpoint on the
function name or open the function and set a line
breakpoint.
■ ...or Set a deferred Line or Function breakpoint *
■ For 32 bit apps, the system loads all the preload DLL's
before 1PMD stops at MAIN. Therefore, Load type
breakpoints for these DLL’s will never be hit (use -i on
startup).
C Set++ Debugger
REXX and DLL's
* Start IPMD
- IPMD CMD.EXE IK <your Rexx.cmd>
« When IPMD displays the code for CMD.EXE, set a load
type BP to stop at the DLL.
B Run
= At the popup indicating your DLL has loaded, open
desired parts and set breakpoints
« Run
C Set++ Debugger
Child Process Debugging
m
« rc = OosExecPgm(LoadError, sizeof(LoadError),
a EXEC_SYNC, NULL, NULL, &rcodes,
® "t.exe");
B
- Add IPMD...
a
® rc = DosExecPgm(LoadError,sizeof(LoadError),
- EXEC_SYNC,
a "ipmd.exe\0-n t.exe\0\0",
® NULL,&rcodes,
a "ipmd.exe");
C Set++ Debugger
Child Processes
« DosExecPgm allows your program to request that
another program execute as a child process. With a
simple change to the parent, you can start an instance
of IPMD to debug the child.
C Set++ Debugger
Multithreaded Applications
* Use the Debug Session Controls window to select and
enable/disable threads
= Breakpoints can be made thread specific
« Separate registers and stack can be displayed for each
thread
C $et++ Debugger
System Hooks
■ pyWSN.DLL restrictions don’t allow the debugger to
function properly
a Always use synchronous mode to debug with
subsystem hooks active
C Set-M- Debugger
C Set++ Support
« CompuServe
- OS2DF1 - section 4 (IBM C Set/2 s IPMD)
- OS2DF1 - section 5 (C++)
» Internet
- OS2-PGMR forum
- "ftp-os2xdrom.com” for CSOs
= 1-800-237-5511 IBM support
- IPMB BBS 1-800-874-2881
■ CSBs
- CTCOOOn Compiler
- CTUOOOn Utilities
- CILOOOn Class libraries (2.0)
- CTMOOOn Class libraries (2.1)
C Set++ Debugger
Workplace Shell Programs
Q In config.sys:
- SET RUNWORKPLACE=C:\OS2\CMO.EXE
« fn an OS/2 window:
- IPMB C:\os2\pmsheII
» Set a Load type breakpoint for the DLL containing the
WPS program
C $et++ Debugger
CC03
Objects at Work
IIH Operating System/2
IBM Class Library: Standard
a Port of AT&T Standard Library 3,0
& I/O Streams Library
* Task Library
88 Complex Library
IBM OpwMting Sysmn/2
Copyright International Business Machines Corporation 1993
IBM Programming Systems
C Set.** ;s composed of;
» IBM Class Library; User Interface a C/C++ Browser
as IBM Class Library: Collection « C/C++ Execution Analyser
& E8M Class Library* Standard as C/C++ Graphical Debugger
as C/C++ Compiler b WorkFreme/2
as OS/2 2.1 Developer's Toolkit
IBM Operating System/2 .
IBM Class Library: Collection
38 Multiple implementations
ss implementation Invariant
as C+ + Template Implementation
a Cursor and Iterator
- Same as :<•$ used Ihe irtteJfaoa Class Library
a Exception Handling
~ Sam* as Is i:s*d ir. the* User Interface Claa* Library
s Used in the User Interface Classes implementation
as Types of Collection:
- Otreus, Stack, 3>riorsty Ouftwe)
- Bags (Stag* Sorted. Ordered. Key)
- Sets (Set. Sorted* Orcloted, key)
- iteps and Relations
- Trees (Binary sad A:b:very)
IBM Opwming Sysi©m/2
1
IBM Class Library: User Interface
Graphic User interface
s Easy to Use
~ hr Fact, chiltfwn car? operate a confute: Ixjfcre t?v>y con reed
» ^ajor influence on an Application’s:
- Pc*rceived quality
~ Fu::ccioria:ity
- fteliasrtry
- Degree- or integration with the c-yeraring vnv:ronmc--t
- Technolooicot superiority
js CUA Workplace Model
- 3&&?’s rate® and reoosnmendancn-*:* for use? ir-teifacc design
~ Focu* on Object*
- K.r;ovytedg* V.-a^ssterenee-
•• i.eavee the dsc- :n Control
IBM Opwming Sysfmn/2
IBM Clms Library: User Interface
Benefits;
» Reuse
- Application
- Library
sa Multi-thread Applications
» NLS/D8CS Applications
w Portability
s Class Hierarchies can be Extended
sa Eliminates the need for PM Programming Knowledge
■ Handier Scheme Supports C PM Program Migration
- Can inter- mix C PM code with Class Library code
IBM Operating Syatem/S
Copyright International Business Machines Corporation 1993
IBM Clms Library: User Interface
OO Exportation
a Encapsulation
vi PM AP3 is hidden leading to greater productivity & portability
« Each class defines its valid operations
vi Can ,r drop into" PM if needed
a Inheritance
55 Better menfai model for iihrary user
sa More efficient and maintainable for a library developer
ss Polymorphism
a Respond to GUI events by overriding Handier virtual
functions
a Customize member functions eg. caicMmimumSizeo
a Templates
ss Tor defining thread member functions, DLL procedure
addresses. Drag Drop item Providers, etc ...
! 3 H Operating Syatwn/2
IBM Clms Library: User Interface
Components
w Frame Windows
a Controls
- Basic PM r-«d OS/2 V2 CUA Ctererclo
- ?^«rtu*
- Extended Cs?«vOS»
- Canvas Controls
a Handlers and Events
a Direct Manipulation
a Dynamic Data Exchange (DDE)
as Resources
a Multi-Threaded Application Support
a Data Types
ISM Opmwting Sy$tm®/2
IBM Class Library: User Interface
Frame Windows
as Frame Window Features
- Pri'Ywy, Sfccomiary 2nd Chiid Window*
- Diaiog Tom pi ate
- Clk-r». Are* w».h A«y Control
- From® £x'»nsi<ir:v
- Tit!* Bar
- System Stem:
- Many S#r
- Window kon
st Standard CUA Dialogs
- F ii« (Open / Soys- As)
- Fork
IBM Operating Sysiem/2
IBM Class Library: User Interface
Canvas Coni rats
55 a Dynamic Control Layout Management
- Manag* Conteo! Biz*
~ Btenage Cteutro: LaftWon
■• Magogs Control Scaling
- Ktansg* Tabbing a:x: Cursor Movernont
- (Manage Owner's Events
ga Layout Based on'
- T<-:<t Contsst
- Font Elxa
- Minimum Sitte
•■ Algorithm
a Benefits
*■ Dvvico Independence
- Reduce iiLS / DBCS Transiatien Cos;
HI Operating Symm/2
Copyright International Business Machines Corporation 1993
h Base PL1, OS/2 V2 CUA arsd Extensions
- StoCo Controls
- Text Controls
- Siids: / Coin Control*
- Canvases
*■ Fop-op frtemus
- Ccntolnsr Control
- Motebocl*; Control
s> No Meed to Subclass
» Control Handlers H$
88 Events Dispatched to Controls
k Resource Support
® Font and Color Support
SIM Operating System/2
IBM Class Library: User Interface
Canvas Controls
w Viewport
~ Aulontetin W::sdov» / Canvas Scrolling
a; ISetCanvas
- Automatic A-a".go Chiid vVmdowss in ftowo S Columns
ss ISpiitCanvas
~ AutoJv.atio Sizing y::d Positioning of Child Windows
- Provides a Spto. Boro between Ute Chiid vVmdows
ss i&uitiCettCanvas
~ tlsor arrange y r Child Windows in Row & Coierrm Coiis
- Frovid-c-o Split Bars votwe-on Cello
- Allows Coll Overlays
HI Operating Syetem/2
IBM Class Library: User Interface
zn 1 1
Handlers and Events
8g Events are Dispatched to Handlers
gg Handlers Attach to Window Objects
« Handler List
sg Reusable Handler Classes at the Application Level
as User-defined Handler Classes for User Messages
88 Single Instance of Handier to Multiple Objects
« Event Classes Encapsulate Message Parameters
s User-defined Event Classes
HU Operating System2
IBM Class Library: User Interface _
Direct Mantpufaison - Ovnrvlnw
a Distinguishing Feature of CUA 'SI and Workplace Shell
a Heoessary for a leading edge OS/2 application
b Benefits of Encapsulating PM Direct Manipulation
t3s« 00 for an ot-oot-action nsvcivlgm is a nstv^: ohcico
- m API
«• Ciosnfy »c?pv'-5to :3k1 ir-to net <V objects
- Rcu-»
HI Operating System/2
IBM Class Library: User Interface
Direct SXanipulasktn - K#v Objects
IBM Class Library: Userlntetface
Dir&a Manipulation - Summary
ss Simple Things are Easy
~ default Handlers, Stem Providers, afa ...
- Add S3 entree andar target Support v;:th ?. single fw;cfion cal: for:
a Powerful DM Framework
- 30 di";.fv>nt clvose-s for DM
- Exploit ihes* to prodac-a almost any type of Dty?
i IBM Operating System/2
^^■BSgSBgMg^ BBSI^ ^gMBBgSEgg ^
a. . sssssssssssssssbssssssssssssssssss sssssss 11 1 |niBin " rni i&sfrSi
QpmMng Systmm/2
Copyright International Business Machines Corporation 1993
Page 4
IBM Class Library; User Interface
Object-Oriented DDE
« DDE Client - DDE Conversation Handier
» DDE Server - DDE Topic Handier
a Encapsulates DDE Messages to Events
« Ail DDE Transactions Supported
~ Mot Links - Waning
- Data rk-gusste
~ Data Pokaa
- Remove Cemrnand Execution
•• Ackn*>wk-^g»rrw:-«te
- Brcc-^casvv
» Hides Complexities
- Obj act. Window
- Shanxi Memory
- Atom Table
« Handlers and Events
HI Operating System/2
4>
M
IBM Class Library; User Interface
Multi-Tfriended Application Support
» Some OS/2 P&i Apps fesi be ^uiti-threaded
88 Full &Su!ti"tbread APIs Supported
sa Library is t$uiti-thread Enabled
« Start Separate Thread on;
- Any Function
- Any C*?+ timber Function
a? Critical Section Ciess
sa Semaphores
HI OpwwUng §y®tmt/2
Copyright International Business Machines Corporation 1993
IBM Class Library; User Interface
Resource Library Support
a DLL Support
a Reference Count Pointer and Bitmap
si Support Ail OS/2 Resource
a Resource ID interface
88 Set Application Resource
a Set Library Resource
HM Op®mSng System/2
8? Construct String Objects
a internationalisation (DECS) Support
a Reference Count
« Robust Functions
- Utility Functions
- Oysrafors (Assignment & Con eaten atio~.\
- Tracing
~ Convert Stung to Other Types
- 3ea?c>*,;ng
■* Editing
- Wc:d Manipulation
- Are currently in Varaiou 2.1 of CSetf* for A3X
MLS Date and Time
ISM Opwattng System/2
5
IBM Class Library: User Interface
Exception Handling
« Exception Handling is Error Hanging
a C+* Exception Thrown
a Common Exception Hierarchy
a Uncaught Exception Handling
Exception information
- <<?ror :d
t zxi tMLS SuoGcned)
- &&verxy
ss Exception trace
-fils
- function
- (?j:^ number
UK Op®mt!n§ Sysmm/2
§|§gg W$IM
^SBCS 1!1!||1|
k Ut£ "fix ne a nd &afe fbcate) : . ||| -||||§||
& HL& teyoul
© f'iLd Resource DLLs
B Single EXE * f§| DLLs
a &L&yOB£&Enabifrig - Text Translation
Copyright International Business Machines Corporation 1993
IBM Class Library: User Interface
Histoty
ss IB LI interne! Use since 1990
a World-Wide IBL3 Usage since 1991
as 10 Llonth Beta Test Before Shipped
» Shipped Version 2,00 for OS/2 in LI ay 1993
a Shipped Version 2,01 for OS/2 in Oct 1993
IBM Class Library: User Interface
Additional (n formation
@ Class Room Instruction
- Skill Dynamic*} -CP10S70C
~ "PW Programming Ussirj^ IGLUi”
- Cal: (@30)-^&«322
gg Mew Book from VMR
- Pow>er GD: Prflsnwmr.mg with C$er++
- 0-442-01795-2 '
- Available Summer or '04
- Written by the Architects and Devaiopere
IBM Operating Systsm/2
IBM ClasslAhmry: UserlnSesface
On-Uno Support
sa Developers monitor to:
- Provide Official Sup pen
- Gather requiitematrto far future releases
sa Within I6&I
- IBtdPG Gonteranoa Disk
:• xfitfsr* "O Wli-f- • v.riJ»:0::o v'>x-: r_<5>:ojy
sa Outside SB&?
- IBtrt TaikLinx Ccnfcm-noing S*>rvice
«• CompuServe • CO 0 ;> 2 : 3 F •
• C4:<&& •-■ St t Jc. :?•>: '.'xJxv.jc'xr xo« :&:« Tc<ote
- internal
• •.:»;«• tut x.v i:«.: CS-ov-.- •?r.y}.y J .\
- OS/2 Software Defect Support Litre
- k*6r>n*y •; 0 \wj’s. r.f, f. OSoto ;•*« v.'.A 'wst* yo:;r .vjvSo/'.'.g: ;;v:n«w rvsr.'j
Ig g| OperMSmg System/2
4»
IBM Class Library: User Interface _
Source Code
IBM Class Library: User Interface
Future Directions
sa Available for:
- bear Interface Glaao Libr ary
- Ceflecrien Cisoa Library
aa Mot needed to effectively use the libraries
as Useful for:
- Learning implemantabcn detail*
~ Sairrg IPhff? daouggsi' with library coda
& Available as a Separate Product
- Product Number 61G140C
88 2D Graphics Classes
a MuHSMedia Classes
sa Win32 Port
si Stfotif Port
bs Customer Partnership Program
- Input cn Fvtura Dliaccicne
- Evaluation o? Sola Paieaaee
- rcr Wore informalior; i : ?.x Daquoat te;
I ISM Operetta System/2
IBM OpmmSng System/2
Copyright International Business Machines Corporation 1993
Page 7
l|IBMCSet++'s
Arrgoligue F. Faustina
Toronto Lab
IBM Canada
► Introduction toWorkFranie
Terminology ? ?p-
111 . ■ 11111
"iiropo^jte Projects
lllMiiliii . : v r;
■ - Actions Profiles -V
111 111
► Comparing WorkFrame ^;;)IM|H||W|PW
- Ver®lon : 2 and Version 1.. ■
£ Wt rs . 1 WW ' HU
► WorkFrame Version 2,1 Qsmon^ratlonM
v Questions & Answers
► Integrating Development Environment
► Language Independent ||p|||||||||l
* Open ". ■ ; -SHI
~ Compilers
► IBM C Set PL/J, Fortran
111 ►
1111 WATGOM C|386, FORTRAN •
► ZortechC++ Iff-
- Editors
*Em
► RimStar
- SourceUnk
► Folly Conllgymfele
lllllllleli WorfeFrarrte Terin inoi<
Projects
► Multiple Source Directories 4 File Masks
► Target File
| List Of Valid AefionsfActions -Pri^iteilllll
Bis!i4i- ; O^fI©f 1 1 : ;;:i
► Run Options
Wofkpratn© terminology
Composite Projects
•.' ?* B^se :: i|;^|0«|ls ;'7
- Composite Projects
;•' OSsigtiatea'Tattje||Pr|)ii?f : ■ '
«?; :' ;: - : ::Suifdor RunTarget from any level In the
hierarchy
: ";. : 'E CpntroHhk order of project pr|§e||mg ■
WorkPmme terminology
Actions
► Ahy tool or command
- OS/2, DOS, Windows
- Text window. Full screen, PM, Monitored
»SHHh MlteXt ■
- Project Sct>pe: iillite, Run'§|||||::|||||Spt; y
-Fife Scope;; Compile,- Edit:.!
=: r ^bure©
•• content sensitive ' ..
^ Options Module
■ • - Set options graphically, Parse dependencies
- Supplied by tool vendor
- Default Options Module Included
' x -
r .. : ; AHillWiiilisV ;
fGi r : -^c?ti class
.^tfgka^nm^s ^i^;v;=- v - .' . ;
§$efan|t Actions Profile applies to everyproject
WorkFrame Term Oology
Monitor
► Save output from action In scrollable monitor
► Any action that emits output to stdout can be
ruh In a Sipfltor
=' ' " 4 "- " '■' ’:’
| Edit :flffJ|J|
jit error lines -' ! ‘
■ ■ ^ f asy tomoveto other errors |jt
► Sinjjpb4o;:.r|r^eGbtn ; ;iny ^'ocjiin- :: :;'
lilil Com paring WorkFrame -
fermion 2 and Version 1
Comparing WorkFrame
► WPS Interface
iMtfplI' directories per■.
§f Actions Profile ■■■ f.
-Unlimited number of i
actions
► Projects and profiles can
\be iocpted arsywhere ■•••••
; ; fcContext;s^sitiveolsject::i
' oriented approach
► Built-in hooks for source
► Pill Interface
^Single directory per
► Language Profile
. : ~ : Compile» Link, Debug,.
■; .'Slake.
Mi projects and profiles • ::
: :. :1pbafed in one directory
► Traditional action oriented
apppiach
► No support for source
code contfdi systems
I Options
- $et§rapnic?.aHy". ;
- Saved with project • :
* Actions run in WorkFrame:
; monitor..dttekiwiridow- ■
► Actions Interpreted per : ’ ’
project
► Actions grouped by
class
► Project represents :
multiple di rectories
► Project and file scope
actions ■
^Opfidns,-- ■
■: «..Setfektuaiy. .
:fli'Sayed:.glQbaily-
► Actions run in tegular .text
wmmmmimmmami
► Actions interpret#.
: .gidbllly.
► All applicable actions
■,lisfed ; .:^
►WPS folder represents .a .
y singse tfirecfdry;.
CC05
C Set ++ Optimization
Tips & Techniques
C Set ++ Development
IBM Toronto Laboratory
Agenda
■ Phases of the compiler
- Optimizations Performed
• What they do
• How they work
« Pentium Exploitation
■ Factors that inhibit optimization
- Hints and Tips
- Debugging Optimized Code
The Front End
► Preprocesses
► Parses
► Performs syntactic and lexical analysis
► Performs semantic analysis
► Performs alias analysis
► Translates results into intermediate code
Intermediate Code Linker
► Combines the intermediate code from several
compile units into one intermediate code unit
- The result appears to the optimizer as though all
functions and variables were declared in the same
compile unit.
- This allows the optimizer to perform
interprocedural analysis, and function inlining
while ignoring the fact that the functions originated
in different compile units.
Intermediate Code Linker
(continyed)
- Reorders statics and global variables to reduce
storage wastage from alignment.
► Takes usage counts into consideration when
reordering, so as to group frequently used
variables together
- Rewrites alias information to take facts into
account that can only be seen by analyzing
multiple source files
continues...
Local Optimizations Performed
► Constant Folding
o Constant Propagation
► Copy Propagation
► Call Parameter Cleanup Coalescing
► Local Common Sub-Expression Elimination
► Algebraic Simplification
Constant Folding
Precalculates constant
expressions or portions
of expressions ^
- Expressions may be ^
rearranged to expose
more constant
expressions
» a = 10*20/5+3*y
The part of the expression
(10*20/5) will be calculated at
compile time.
»b = 10 + a + 12;
This expression will be re arranged
so that it will read b = 22 + a ;
ttdefine FOO 100
#define BAR 200
#define FOOBAR (FOO+BAR)
Will result in foobar having
the value 3 00 calculated at
compile time.
Constant & Copy Propagation
Uses the same value for
copies of variables and
constants
- can eliminate copies
of variables.
Given the following code fragment:
a = (b+c) ;
i = j+k;
d = a;
X = y-f-H;
The copy of a into d wiii be
eliminated and subsequent
references to d will be substituted
with a reference to a.
a = (b+c) ;
i = j+k;
x = y+a;
Common Sub-Expression
Elimination (C.S.E.)
Identifies calculations
which are identical and
redundant and removes
them.
- Compiler must watch
out for aliases! ^
" becomes:
tmp = &hRes[i+j]
*tmp = PoolAlloc(HashPool);
tmp->hSym = hSymbol;
tmp->hNxt = pHshTab[IKey];
tmp->hNewSym = NIL;
pHshTab[IKey] = *tmp;
The code fragment:
hRes[i+j]=PoolAlloc(HashPool)
hRes[i+j]->hSym=hSymbol;
hRes[i+j]->hNxt=pHshTab[IKey]
hRes[i+j]->hNewSym=NIL;
pHshTab[IKey]=hRes[i + j ] ;
Parameter Cleanup Coalescing
Coalesces the add
ESP,nn found after
each call.
- Removes a major
performance penalty
found In csSlor closnup
of argument lists.
Consider the C fragment:
a =
foo(b, c,
d) ;
e =
bar{f, g)
Code Generated:
Berors
A tier
PUSH
d
PUSH
a
PUSH
C
PUSH
c
PUSH
b
PUSH
b
CALL
f oo
CALL
f oo
ADD
MOV
ESP,12
a, EAX
MOV
a, EAX
PUSH
g
PUSH
g
PUSH
f
PUSH
f
CALL
bar
CALL
bar
ADD
ESP,8
ADD
ESP,20
MOV
e, EAX
MOV
e, EAX
Algebraic Simplification
► Uses the rules of
algebra to simplify
mathematical
expressions.
- A simpler expression
can have faster and
more compact code
generated.
For example,
The expression:
a = {!b || 1c)
becomes:
a = 1 (b && c) ;
The expression:
a = 5*b + 5 *c;
becomes:
a = 5*(b+c);
Local Optimizations
(continued)
► Expression Reorganization
► Redundant Load Removal
► Peephole Optimization
► Prologue/Epilogue Shrinking
► Frame Register Remapping
*- Storage Packing
Expression Reorganization
► Using the rules of
algebra, expressions are
reorganized to expose
more common
sub-expressions
- This provides more
opportunities for other
optimizations.
For example,
a = (!b || ! c) || f;
d = 7*a + 5*c + 7*d;
e = I(b&&c);
f = 7*(a + d) / x
becomes:
a = ! (b && c) | | f ;
d = 7 * (a + d) + 5 *c;
e = ! (b && c) ;
f = 7* (a + d) / x;
becomes (after C.S.E.):
a = (tl = ! (b && c)) | | f ;
d = <t2 = 7* (a + d)) + 5*c ;
e = tl;
f = t2 / X;
Redundant Load & Store Removal
Removes loads of
variables which are
For example:
already in registers
MOV EAX, a
ADD EBX, EAX
Removes the first of
MOV EAX, a
several consecutive
MOV b, EAX
stores to the same
Becomes:
variable
MOV EAX, a
ADD EBX, EAX
- Volatile honoured
MOV b, EAX
► Volatile causes the optimizer
to leave a specified variable
and the C fragment:
alone. No reordering or
a = x+y ;
elimination of loads or stores
a = !(b && c)
to the specified are
performed.
Becomes:
a = ' (b && c) || f ;
Peephole Optimizations
► Examines the instruction stream for short
sequences of instructions which could be replaced
by more efficient or smaller sequences.
> Not a heavily used technique in C Set ++
- We prefer to select the right instructions, rather
than the wrong ones which will get fixed up later
by the peephole optimizer.
- Some sequences are unavoidable, however, and
these are handled by this optimization.
Prologue/Epilogue Optimizations
Removes saves and restores of unused registers
that are in the save set as defined by the calling
convention.
- May entirely remove prologue & epilogue if there
are no iocais.
- Significantly benefits small procedures, where
the overhead of the prologue and epilogue can
be larger than the work to be performed in the
body of the procedure.
Storage Packing
► The Optimizer will
reorder locals so as to
keep them aligned, and
minimize the space
taken.
- Reduces stack space
requirements, and
increases cache hit ratio.
- Sort based on usage
counts helps cache.
Consider:
void foo(int bar)
{
int a;
char b;
int c;
char d;
int e,-
}
The ints are dword aligned, so this
stack frame takes 20 bytes. If the
compiler re-orders them:
int a, c, e;
char b, d;
The stack frame only takes 16 bytes.
Frame Register Optimization
Uses ESP as a frame
register instead of EBP.
- Reduces the number
of instructions in the
prologue and epilogue
- No short forms for
ESP based
addressing modes
Note: /Gr disables this optimization
since negative offsets from ESP are
unsafe at ring 0.
Foo PROC
PUSH EBP
MOV EBP, ESP
SUB ESP, 4
MOV EAX, [EBP+4]
ADD EAX, [EBP - 4]
LEAVE
RET
Becomes:
Foo PROC
MOV EAX, [ESP+8]
ADD EAX, [ESP]
RET
Global Optimizations Performed
Global Register Assignment
Loop Unrolling
Loop Induction Variable Analysis
Strength Reduction
Loop Invariant Code Hoisting
Advanced Aliasing Analysis
continues ...
In the following ternary example:
► Identifies values which
should be stored in
registers for large
ranges of code - and
across control flow.
The following code would be
generated:
MOV EAX, x
CMP EAX, y
JE LI:
CALL func2
JMP L2
LI:CALL FUNC1
L2:MOV a, EAX
Loop Induction Variable Analysis
► Identifies loop index variables, and any other
variable which changes by a known amount each
iteration of the loop.
- Identifies these as candidates for placement in
registers.
- The register assigner will decide later which ones
will actually be placed in registers.
a = (x —— y) ? fund (x)
: func2(x);
► Repeats the body of the
loop a number of times. T he following loop:
- Reduces the loop
overhead.
for (i=0; i<4; ++i)
- If the loop condition
has a constant factor,
the loop can be
unrolled by that factor.
Changes to:
b [0] = 0; b [1 ] = 0;
b [ 2] = 0; b [3 ] = 0;
The following loop:
for (i=0; i<x*2 ,* ++i)
b[i] = 0,-
Changes to:
for (i=0; i<x; ++i)
b [i++] = 0 ,b [i] = 0 ;
Loop Invariant Code Motion
► Removes expressions
from a loop if it can be
determined that they
don't change from one
iteration to the next
it changes to:
for(i=0, t=j*k; i<10; ++i)
b[i] = i + t;
If we start with a simple loop:
for (i=0; i<10; ++i)
b[i] = i + j * k;
As long as the compiler can determine
that b cannot point to either j or k.
Strength Reduction
Replaces complex
calculations depending
on an induction variable lf we start with a sim P |e | 0 °p :
with a simpler for(i =0 . * <10; ++i)
calculation. bin = o ;
it changes to:
for(i=0,x=&b ; i<10; ++i,++x)
*x = 0;
which changes to:
for(i=&b+10,x=&b; x<i;)
*X++ = 0;
Advanced Alias Analysis
Determines which variables any given pointer can
possibly point to.
Determines which pointers can point to any given
variable
- Initially performed by the Front End, but rewritten
by the intermediate code linker to account for facts
that cannot be obtained by looking at only a single
compile unit.
A basic function upon which many optimizations
depend
- Often not well performed by other compilers
Simple Loop Recognition
» Identifies loops which
are equivalent to
functions like memcpy
memset, or strcpy, and
generates very
efficient code.
If w© start with the following code:
for(i =0; i <100; ++i)
j [i] = 1;
for(i =0; i <100; ++i)
b[i] = c[i+1];
it generates:
MOV
ECX
, 25
MOV
EDI
, offset
j
MOV
EAX
, OhOlOlOlOl
REPNZ
STOSD
MOV
i ,
100
MOV
ECX
, 25
MOV
EDI
, offset
b
MOV
ESI
, offset
c + 1
REP
MOVSD
Global Optimizations
(continued)
► Advanced Switch Analysis
*> Jump Straightening
► Jump Folding
► Dead Code Removal
► Boolean Store & Return
Advanced Switch Analysis
Finds dense regions in a switch list, and generates
a branch table for each dense region
Uses binary searches to handle the sparse regions,
or to find which dense region the desired case is in
Only uses a string of if - then - else, if there are 2 or
3 cases in the switch
Dead Code Removal
Removes unreachable
code
- either created by the
user through sloppy
programming
- or generated by the
optimizer.
Combining constant propagation, and
dead code removal on the following
loop:
j = 5;
for (i=l;i<10;++i) {
a [i] = j ;
if (j == 5)
a[i] = 0;
else
a[i] = 10;
Results in:
for (i=l ; i<10;++i)
a [i] = 0;
A REP STOSD will be used
to fill the memory with Os.
► Branches to branches
are removed and
replaced with jumps to
the final target
if (a)
switch(foo) {
case 1: break;
case 2: break;
11 :}
else {
// ....
}
L2 :
Normally, the break statements
would translate into a jump to II.
The first thing that will happen at II
is a jump to 12. This optimization will
cause the break statements to
generate jumps directly to 12.
Boolean Stores & Returns
► Removes an if - then -
else statement, and The c fra 9 ment:
replaces it with an a = 1 ,-
expression with no else _
control flow.
turns into:
a = (X —— 0} ;
The C fragment:
if (a == 0)
return x + n;
else
return x;
turns into:
return x + ( (a == 0) * n);
Interprocedural Optimizations
► Optlink calling convention
► Register Resurrection
► Tail Call Elimination
► Tail Recursion Elimination
► Procedure Inlinlng
► Intermediate Code Linking
- Makes the interprocedural optimizations work
across compile units.
Optlink Calling Convention
► Register based calling convention
- Can pass both integers and floating point
parameters in registers.
► The first 3 integer parameters and first 4 floating
point parameters wiil be passed in registers
- Abie to handie the absence of prototype
statements
. even in the presence of variable length
argument lists
Register Resurrection
► If a leaf procedure does not alter a register that is in
the killed set (EAX, ECX, EDX), it is marked as
preserved for that procedure.
- allows the optimizer to keep more values in
registers across calls.
- The optimizer reorders procedures to expose
more opportunities for resurrection.
Tail Call Elimination
* When the last statement
in a procedure is a call
to another procedure, it
is turned into a jump.
- eliminates a return, since
the procedure you jumped
to returns directly to your
caller.
► Better cache behaviour
- Assumes sufficient
parameter space.
int foo(int a, int b)
{
//...
//...
bar (a, b) ;
}
The call to bar will be replaced
with a jump to bar.
► Similar to Tail Call
Elimination, Tail
Recursion Elimination
turns a recursive call
into a jump - making a
recursive solution into a
much faster iterative
one.
For the following code: (from hanoi.c)
static void Move(int n,
int nSrc,
int nDest,
int nAux)
{ 11:
if (n == 1)
++INumMoves;
else {
Move(n - 1, nSrc,
nAux, nDest);
++INumMoves;
Move(n - 1, nAux,
nDest, nSrc);
}
}
The last call to Move turns into a
goto to li:
Pentium Exploitation
►
Rewritten built-in functions
Different Instruction Selection
Instruction Scheduling
Procedure Inlining
► Selects functions to be inlined based on the
following criteria:
- Size
► Procedures smaller than the threshold specified
on /Oi will be candidates for this optimization
- Jnline keyword
Current Built-in Functions
- abs
« strcat
- fsin
• _alioca
- strchr
■ fcos
■ fabs
- strcmp
» ftan
« labs
■ strcpy
B fasin
- memchr
■ strlen
■ facos
- memcmp
- strncmp
■ fatan
- memcpy
■ strncpy
- fsqrt
« memmove
« strrchr
■ _c!ear87
» memset
■ fsincos
B _control87
Rewritten Built-In Functions
Most of the built-in functions have been rewritten to
maximize the possibility of concurrent execution on
the Pentium.
Instruction Scheduling
► Instructions are
reordered to maximize
the possibilities for
concurrent execution,
and minimize the
likelihood of interlocks
between execution
units.
An ©xampi© where w© avoid an
AG I on the 486:
MOV EAX, varl
MOV EBX, i
MOV ECX, [EAX+EBX*4]
Becomes:
MOV EBX, i
MOV EAX, varl
MOV ECX, [EAX+EBX*4]
Note that if the index register in
a base-index-stride addressing
mode was set on the previous
instruction, the instruction using the
address mode will take an extra cycle.
Instruction Selection
Floating point instruction selection changed to make
better use of the Pentium's floating point pipeline.
Factors That Inhibit Optimizations
Aliasing, Aliasing, Aliasing
- Gratuitous address taking
- unnecessary use of global variables
Needlessly complex control flow
- multiple got os out of loops
- gotos into the middle of loops
Hints & Tips
Hints & Tips - Using Strings
9 - Compile Options
- Use /O /Gi /Gf /Oi /Os /Gh- /Gr- /Gw- /Ti- /Ts-
► Optimize, use fast integer, use fast floating
point, inline procedures and schedule. Don't emit
profiling hooks, don’t disable stack frame
optimizations for ring 0, don’t emit FWAIT
instructions, don’t generate debugging
information, and don’t disable stack frame
optimizations for the debugger.
► Use Execution TRace Analyzer to find hot spots in
your code.
► Use #pragma strings(readonly)
- When you use built-in string functions, the
compiler can generate better code when it knows
that string literals will not be changed.
► DWORD align strings
- Compiler will align all strings it allocates, but you
should ensure that strings you store in memory
allocated with malloc are dword aligned.
continues ...
continues ...
Hints & Tips - Using Strings
(continued) Hints & Tips - Calling Functions
► Use the built-in string functions rather than trying to
duplicate them in your code.
► Avoid built-in functions in loops.
- Many built-in functions use multiple registers. Some of the
registers are specific and cannot be changed. In the loop, the
number of values to be placed in registers increases while the
number of registers is limited. As a result, temporary values
often cannot be stored in registers. This can slow your program
down more than the built-in functions speed it up.
► Whether you are writing or calling a function, keep
the following in mind:
- Fully prototype all functions
► A full prototype gives the optimizer complete
information as to the types of the parameters -
type promotions don’t take place, and optlink
eyecatchers are not emitted.
continues ...
leftmost position in the parameter list
- The leftmost parameters have a better chance of
being stored in a register due to the optlink
selection of parameter registers.
continues ...
Hints & Tips - Optimizer
► Minimize the use of extern variables
- Reduces aliasing, and therefore improves optimization
► Avoid taking the address of local variables
- If you use a local variable as a temporary, and must take its
address, avoid reusing that temporary for other purposes.
Taking the address of a local variable increases the potential
for aliasing, and inhibits optimizations that would otherwise be
performed on calculations using that variable.
continues ...
Hints & Tips - Calling Functions
(continued)
by value
. Passing aggregates requires the compiler to copy and store
many values. Pass or return a pointer to the object instead.
- In a Tail Cal! where you pass the same
parameters that you received, try to pass them
the same order.
- The optimizer can just re-use the storage and registers
they're in now, and not have to copy them.
continues ...
Hints & Tips - Optimizer
(conti raued)
Avoid using short int values
- Since all integer arithmetic is done using long int
values, short values cause extra conversions to
be performed.
Use unsigned data types for variables whenever
possible
- When an unsigned variable is divided by a power
of 2, the compiler can use a shift instruction
instead of the much slower divide instruction
- Faster code can be generated for comparisons of
unsigned variables
continues ...
Hints Si Tips - Optimizer
(continued)
Kuxirnii H7 i k i«ouuwumKaaMui^^ unmi
► If a loop body has a constant number of iterations,
use constants in the loop condition.
-for (i=i; i<4; ++i) can be optimized better
than for(i=l;i<x; ++i)
► The loop unroller will unroll the first example,
but not the second.
Hints & Tips - EXE Size
► Choosing Compile Options
- /Gd+
> Links dynamically to the runtime library - no copy of the
library in your EXE
- /0+ /Gf+ /Gi
> Turns on full optimizations - results in much more compact
code.
- /Gh- (default)
> Turns profiling hooks off (These take 6 bytes per proc)
continues ...
Hints & Tips - EXE Size
(continued)
► /Gw- (default)
- Does not emit FWAITs after each FP load and
store, (only useful when you require precise
reporting of FP stack underflow & overflow
► /G3 (default)
- Optimizations performed specifically for the 486
often result in larger code due to alignment
considerations on the 486.
Hints & Tips - EXE Size
(continued)
- /Ti- (default)
► Debug information can be larger than the
executable code.
- /Ts-
- /Ts disables some optimizations that confuse the
debugger. They also save 8 to 12 bytes each
procedure.
continues ...
continues ...
Hints & Tips - EXE Size
(eontinued)
* Other Techniques
- If you don't use the envp argument to main, create
an empty _setupenv function
- If you don't use the argc and argv parameters to
main, create an empty _setuparg function
- Use #pragma strings(readoniy)
* Will result in more compact code from string
built-in functions.
Hints & Tips - C++ Specific
► Improve memory usage by:
- tailoring your own new and delete operators
- allocating memory for a class before it is required
- avoiding the copying of large complex objects
► Use the /Gx+ option to suppress the generation of
exception handling code when it is not needed
► Only use try blocks when necessary because they
can inhibit optimization
► Consider making small virtual member functions
non-virtual if more than one called in a row
- non-virtual member functions can be inlined
- a switch to determine type of object is done once
► Avoid performing a deep copy if a shallow copy is
al! that Sq rpnnirpH
Debugging Optimized Code That's its
► turn off instruction scheduler with /Os-
► do not rely on the monitor windows for the values of
variables
- values may be kept in registers and only
occasionally stored (or may never be stored)
► static or external variables can be monitored at
function entry and exit points
► use mixed mode and registers window within the
debugger
I know the pace of this presentation was fairly brisk, and the
subject matter quite technical. I thank you very much for your
attention. This seminar will be repeated each day of the
conference, and you are welcome to attend a second time if
you believe it will help.
In the unlikely event that we aren't already 10 minutes
over-time, I’ll be happy to field any questions.
Thanks again from the entire C Set ++ Optimizer team:
Cheryl Fraser, John Keenleyside, Glen Lalonde,
Stephen Lauzon, Jim Lemke, Hester Ngo,
Vijaya Singh, Kevin Stoodley
CC06
CC06 Performance
Tuning with Extra from
C SeH+
John Hidden
David KoSpek
IBM Lexington
Trace Generation Functions
- System calls tracing
- Trace calls to PMWSN, PMGPI, and
DOSCALLS
- User Events
- Extra accepts calls from the target
application and places the parameter
string into the trace file
- Trace File Access Calls
- DosOpen, DosRead, DosWrite,
DosCSose, and DosDupHandle
C Set++ Extra
Introduction
■ Improve performance
- Understand your application
- Indicate where deadlocks occur
= Trace multi-threaded Interactions
* Indicate exceptions
C Set++ Extra
Preparing an Application
> Generate "profiler hooks" with the
/Gh compiler option
- Generate debug information with the
U\ compiler option and IDE linker
option
> Link In dde4xtra„obj
■ Optionally, link in system Intercept
libraries
■ Install dde4xtra.sys
C Set++ Extra
■ Profiler hooks are placed in the
proSog code of each function
■ Extra hooks the return address for
the function
■ Trace events are stored in memory
- Trace events are periodically written
to disk
- Trace analysis programs are used to
analyze the data
C Set++ Extra
Statistical Summary Display
■ Statistics available by function
- Total execution time
- Total active time
- Execution and active time as a
percentage of total time
- Minimum,maximum, and average call
time
- Total number of calls
C Set++ Extra
Statistical Summary Display
■ Textual report of execution time by
function
» Summary Information
. Number of executables, functions, &
threads
. Maximum nesting depth per thread
. Total time
♦ Total events
. Number of user events
. Percent time per module
C Set++ Extra
Call Nesting Diagram
■ Hierarchical display
■ Application’s execution as a vertical
series of function calls and returns
- Context switches between threads
C Set-H- Extra
Call Nesting Functions
■ Pattern Recognition
- Call Nesting diagram allows data
reduction
■ Annotation
- Add comments to Call Nesting diagram
- Call Stack
Time Line Diagram
- Hierarchical display
■ Similar to Call Nesting diagram
a Time stamp Information used to
place events along the vertical time
dimension
■ Context switches between threads
- Provides chronological
relationships between events
C Set++ Extra
C Set++ Extra
Execution Density Diagram
■ Execution time is displayed as a
fixed number of horizontal time
slices (scan Sines)
■ Functions are assigned a fixed
vertical column
- Time slices are colored across
functions to show the percentage of
time each function used within that
slice
Dynamic Call Graph Diagram
■ Graphical display of the application's
execution
■ A function is represented by a node;
calls between functions are shown
as arcs between the nodes
■ The color and size of nodes and arcs
depict the time spent in the function
and the number of calls between the
functions, respectively
C Set++ Extra
C Set++ Extra
Additional Features
- Call stack depth
■ Trigger functions
- Buffer wrap
- Time-out controls
- Filtering
■ Search for functions
■ Print screens
■ Correlation
C Set++ Extra
Future Directions
■ Integrating window
- Trace dynamic DLL loading
- Start/stop trace
C Set++ Extra
Corttrsinnieatiens Manager/2
COMMUNICATIONS MANAGER/2
The Power of Personal Networking
George Sweeney
Enterprise Workgroup Computing
Research Triangle Park, NC
* Features & Functions
User Environments
> Co-Existence With Other Products
* Future Directions
> AdditionaUnformation
Gateway
Provides LAIN Workstation Access to Host
Supports up to 254 Logical Units per Physical Connection
Supports Multiple Host Connections, up to S
Supports Dynamic Addition or Update of Workstations
Without Reconfiguring
Connectivities
Oats Compression Support
~ Improves Effective Transfer Pats
at Session Level
ttsas Hun Length Encoding (RLE)
and LempheLZIv **tt (LIB)
W;de Area. Connector (WAG; Adapter Supped:
~ Pmvidec 64 Kbps Capably
Supports 2 SDLC Urns
Async SNA Phone Connect Scenarios
• LU 6.2 AjjftHeatlwis (5258 Bn.}
► ssm Applications {AS/400 Pm®mw)
bs/bqog
1?
USMOC
imWQ
/ V
Async.
m^ m
APPN UN
Advantis Network
^ /
/ ^
Road
End-User
VTAM
NCP
Host :
Home or Small
Office
AutoSync or Sync SNA Phone Connect Scenarios
mA Applications f3&70 Em.)
LU 6 SL applications (5250 Em.)
VTAM
NCP
Host: |
ASpfi
ftS/4®
Advantis Network
Public Analog Network
APPNNN:
Home or Small
Office
AutoSync or Sync access to X.25 networks
Programming Interfaces
- System and System Services
- Communications Manager Kernel
- Common Service©
- System management
- SPA Bouter/HOP Services
> Communications
. — EHLLAPI •,
"~8RPf.
-tUA
-APPC
* Full duplex Conversations
* Non-Blocklrig Verbs
-CPI-C Level 2.0
- ACDI :
- X.25
- HeaNime interface Co-Processor (HTfC)
- mm
WT®m$§2m
~ Same Look and Feel
- Dynamic Bon Time Options
% Hot Spots, Pop4Jp Keypads
-^ytomatio Font Selection
- .Session Level Encryption.
-Up to 26 Active Sessions (OS/2 2,t)
-Mono-Driven Fife Transfer
- Response Time Monitor
- PCMCIA Support
- Import/Ejcport Support
- integrated Host Graphics
t Assist tor PC Support
Packaging: 3.5“ Diskettes
■ CM/2 Product Code
CR^2 Applets
MTS /2 Product Cede
SOFTERM Custom Plus, ASCII Emulator
Installation and Configuration
.Quick: Install Card
• User's Desk Reference
J*:f Quine Publications.
“ Command Reference
• \ Messages Reference
■ -Overview :
- Problem Determination Guide
Configuration Map Poster :
Publications Order Form
► Korean (Standard)
• Seaman
- Double Byte Character Set Version
- Ctiloose (J radittonal.) , .
«Korean (KS)
Packaging: C f
• €M/2 Product Code
- CD-ROM Installable
~ Diskette Images
► Cm Applets
• APS: Support Code
MTS/2 Product Code on CD-ROM
• S0FTEM Custom Plus, ASCII Emulator
• installation and Configuration ■■ ■ ■■;
• Quick Install Card
sk Reference
- Online Publications
- Command Reference
- Overview
- Glossary
- Problem Determination Guide
Configuration Map Poster
• Publications Order Form
Multiple Host Connections
Host«based Applications
&ppcim~c Applications
cm
Gateway
WfeiltipieUnk to Same Host
-Ilor© thap 254 dependent Liis
Imk to Multiple Hosts
Gateway Provides Traditional
SNA Client/Server SiSodei
APPC and CPt*C Implement
Cilent/Server Applications
AWGiCtn-C Application
mmuma
Features & Functions
AnyMfit
User Environments
TCP/IP
Co- Existence With Other Products
Future Directions
AnyHet/21
CM/2
Gateway
CM/2
Additional Information
AppUttetteo*
AppSeattorfs;
. Apj#cafl6ns
AnyNet/2 8ac$uirad Only at Gateway
Allows Current Applications loti se TCP/IP Networks Unchanged
;Can Be:U$ed;in ftix&i Environment - .S&A: and, TCP/IP ;;
RouteXpancter/2
LAN Distance
wmm
CMJ2
Cfcatttway
Future Oonsideraftioris - Paelaglrsg
packaging
-Emulators
-Gateways. ■
- Programming Interfaces
Future Considerations«Function
ilHA/APfinhancsments;
~ Transmission Priority
- Dependent LU fteguester
- LU6,2 Enablement
*Session Level Encryption
, v: V Sync.Powt
Connectivity Enhancements
- SMA Phone Connect ::
-SDIG
Exploitation ;
- Gommunications API's
- System and System Services APIs
Adapter Support
- Deep Adapter Ena Moment
Shallow Adapter Enablement
32-Bit Application Development
ecpres^dConceps
* C -Compiler Su ppm
.£ 16-Bit System
Semaphores
~ Awareness of Underlying
/■Environments
- Migration of Applications
; to32-Bit Environment
Possible Priority for
32-8itAPrs
:i EHELAPI
-CPI-C
-IUA ; ;
- APPC
- ISD^I '
-KJ5 /'
,~A GDI
Workplace OS Communications
Which
API’s?
What New
Features?
What
Connectivity?
[What Protocols?
„„,fte®ds For The Future
*• Features & Functions
| User Environments
- Co-Existence With Other Products
- Future Directions
- Additional Infer?
The Power of
The Communications Leader |||M
forOS/2 1
Communications
Manager/2 8K'
Personal
Additional information
»> . ■ . ■ ■ ' ■ : .
CMOS - Complex Configurations
IQ> t ■ • OfctotJTS
and Problem : Determination
: CSOfl - SJ4A ©lient/Server In ;
Communleations Environment
CMSI~TUP Command Syntax
► Installation/Conligyration Overview
CMSETUP parameters
The correct syntax for the CMSETUP command is:
CMSETUP
/C configuration_file
/I configuration_file
/D drive (/0)
► installing other products
- Se® Read Me - OS/2 and Other Prerequisite
Produc t Fixes
* DB2/2 prior to 1.06.1 and LAN Distance 1.0
- See What’s New - Coexistence with Novell
► Selective install
► RIPL support
► CMSETUP command
All parameters are optional.
The parameters are described as follows:
(/C conflguration_file) - Create or modify a configuration.
(/I configuratlon_file) - Install a configuration.
(/D) drive - Remove Communications Manager/2.
(/Q) - Do not display any messages while removing.
(/K) - Remove files not required by the default configuration.
(/R response_file) - Perform a remote installation.
O
Installation/Configuration documentation
Ship group documentation
► Qu ids Installation reference card (SX75-008S-01)
► Workstation Installation and Configuration Guide ($031-7169)
Separately orderable
► Network Administration and Subsystem management Guide
($031-6163-01)
► Host Connection Reference (SC31-6170-1)
► Host Print Guide ($031-7145-0)
► Version 1.1 Enhancements (STSC Red book GG24-4142)
► Integration of Common OS/2 Communication Products (GG24-4005)
Online documentation
► Command Reference (describes device drivers)
* READMEJNF (use VIEW facility)
* What's New m CM/2 1< 11 (use VIEW facility)
* Now Do I (selaci from emulator help)
Agenda
► Installation/Configuration Overview
► Installation/Quick Configuration Demo
► Distributed Feature
► Problem Determination
CD-ROM
contents listed under Diskettes, plus:
CM/2 publications
MTS/2 (for direct install or building diskettes}
CM/2 Eedbooks, NTS/2 publications, and SNA publications
Diskettes ^
8 Product Diskettes
2 Productivity Aids Diskettes
1 Softerm Custom Plus (ASCII Emulator) Diskette
3 Network Transport Services/2 Diskettes
Separately Order:
1 API Support Diskette
1 Network Administrator Sample Programs Diskette
Demo Overview
► Install Communications Manager/21.11
- Install from diskette images
► Configure for 3270 emulation
Communications Manager/2 Polder
3270/5250 Session Management
Emulator Functions
CMSETUP Window Options
Snstafl/Conffgure window flow
List of windows during demo
1. <Communications Manager/2 Logo> 10 configuration definition
2. cCopymg product fifes>
3. clnstalfation notes>
4. Target Drive
5. Setup (configure)
6. <Copytng files>
7. Open configuration
8. <Greate new configuration?>
9. <Use for this workstation?>
11« 3270 emulation (TR)
12. Begin install process?
13. install
14. Additional functions
15. Change CONFIG,SYS?
1S.<Copying files>
17. Completion
<...> not included in handout
m Communications Manager Setup
Communications Manager Setup
If you do not have a configuration, select SETUP to
create one and optionally install the necessary product
files. If you already have a configuration, select either:
SETUP to modify the configuration and optionally install
the necessary product files, or
INSTALLATION to install the necessary product files.
If the configuration is from a previous release, it will be
upgraded automatically.
Create or modify a configuration
Install necessary product files to
support a configuration
Installation.
! Target Drive Selection
Select a target drive where the Communications Manager product
files will be installed.
Note: The Communications Manager product files will be installed
in a subdirectory called CMLIB on the drive you select.
Workstation type: Single User
Workstation Disk Space
Drives CM Version Type Available
C: 29/19 KB H
D:
CM/2 1.1
Single User
4419 KB
E:
Unknown
10727 KB
S
~P1 )ga _
m
~P1 IP El
i M l C Close | | Help |
Select Drive, then Select OK
Open Configuration
Either type in a name and description to create a new
configuration or select a configuration from the list below.
Select OK when finished.
Configuration |PEMO |
Description |3270 emulation over Token Ring
Directory IfjPACMLIB _______
Directories
Configurations
DLL
LOCK
[A:]
[C:]
[D:]
DEMO
TR3270
I E I
I Help |
Select existing file or
Selected configuration OLDCFG
Selected configuration version level Communications Manager/2 1.0
The selected configuration Is not at the current version level.
It must be upgraded to be utilized In the Communications
Manager/2 1.1 environment.
i Backup selected configuration Backup name |CMI9CFG| j
OK | | Cancel | | Help |
ill in new name
OS/2 Communications Manager
Configuration Definition
5250 Emulation through Token-ring
APPC APIs through Token-ring
5250 Emulation through Twinaxial for AS/400
3270 Emulation using SNA Phone Connections
||3270 emulation through Token-ring to a host
Configi
Close
| Options Gateway Help
.-Definition selection-
Commonly used definitions
^ Additional definitions
To configure any of the items listed,
select one and select Configure.
Select Close when the configuration
Is complete.
Communications Definitions
Quick Configuration for 327©
Install Additional f- Line lions
Additional Functions
•Disk space
Required:
Available:
Select the additional functions you wish to install. Functions pre-selected
are shown as pending. Select OK when finished.
Select/Deselect functions. Select OK
.-Function list-
Function
Installed
Size
AnyNet/2 Support
No
155
KB
APL Font Support
No
270
KB
■Command Reference
(Pending
!
KB
Glossary
No
442
KB
Host Graphics (GDDM-OS/2 Link)
No
401
KB
Interactive Configuration Interface
Yes
4698 KB
Completion
Communications Manager installation has completed successfully.
In order to use Communications Manager functions, you must
perform the following steps in the order given:
If installing from diskettes, remove the last diskette.
Stop all your running programs.
Shut down your system from the OS/2 desktop.
Restart your workstation after shutdown to complete the changes
requested.
Change CONFIG.SYS
[ | Change CONUG.SYS
The configuration specified requires changes to your
OS/2 system configuration.
OS/2 system configuration-—-——
^Change COMF8G.SYS; backup copy will be
made in \CMUB\CONF!G.SYS.
f j0F l Do not change CONFIG.SYS; changes will be
stored in \CMLIB\CONFlG.CM1.
Install/Config changes from CM/21.0
► Configuration improvements
- Quick Config specify number of printer sessions
- Quick Config for APPC
- SNA Phone Connection configuration
► Installation Improvements
- faster unpacking of files
- selectively Reinstall or Refresh
- NTS/2 shipped with CM/2
► CID improvements
- remove additional functions
- configure SNA Phone Connection
- configure Focal Point Support
- Response File Reference in CM/2 folder
«► Irtstaltation/Configuration Overview
► Instaiiafion/Quick Configuration Demo
► Problem Determination
► What is ft
- run multiple workstations from a single file Server
- central code control
- minimum DASD on workstations
- subset of connectivities
Setting up the LAN file server
- CMSERVER command after CMSETUP or CMIMAGE /U
- create configurations for workstations
installing the distributed feature workstation
- CM IAN command
- upgrade of downlevel configurations supported
- configuration changes permitted after install
- CID to configure distributed feature workstation
551 Communications Manager/?' Icon View
§ 32 70/5250 Session Management - DEMO
Communications Manager/2 Folder
3270/5250 Session Management
Communications Manager Setup
Remote Operations Service
" M 1 " Start Communications
Service Point Application Router
w Stop Communications Normally
What's New
in §E IB Sto P Communications Abnormally
Read Me
Manage 3270/5250 Sessions
Overview
Replace Default Configuration
Glossary
gjjgj Keylock
Command Reference
Problem Determination Aids - Trace
Problem Determination Aids
Problem Determination Guide
Subsystem Management
Message Reference
Host Graphics Trace Utility
Host Graphics User Guide
Session
Help
Short
Long
Session
Session
Session
Session
Name
Name
Status
Comment
3 B
3270 Non-Coaxial
Stopped
: C
3270 Non-Coaxial
Stopped ti .[
—P a a m 5
Communications Manager Setup
; Options
I Install additional functions...
K(Hjl)u.irV|.
Hoiii.i[>kt:yho).'ii(l;.
CMSETUP window options
Emulator Functions
File Edit Transfer Settings |
VM/ESA ONLINE
WELCOME TO THE SOUTH
Perform keyboard function.
ilect SETUP to
necessary product
ition, select either:
Remove additional functions.
E PfiRK
Hotspots setup.
Display popup keypad.
Popup keypad setup...
Reinstall...
Remove Communications Manager.
Remove communications features.
id optionally install
View system information.
View audit trail...
y product files.
VV VV MM MM UU UU S _
VV VV M M M M UU UU SSS \_/
VV VV M M M UU UU _.
VV VV M M UU UU VM/ESR 2.0
VMM UUUUUUU RTP SOLUTION CENTER
USE OF THIS SYSTEM IS FOR IBM MANAGEMENT APPROVED PURPOSES ONLY
Enter VMEXIT on USERID Line to Return to MDQ Screen
Fill in your USERID and PASSWORD and press ENTER
(Your password will not appear when you type it)
USERID ===>
PASSWORD ===>
Recreate folders.
upgraded automatically.
Create or modify a configuration
Setup.
Install necessary product files to
support a configuration
Installation.
COMMAND
RUNNING RRLVMU
Close
Install Audit Trail
FFST/2 Message Log
Bundle log file
CM/2 Fixes
► Installation/Configuration Overview
CM.tOC,
OS2MLOG.DAT
BXX.t.OG
FIXES TXT
► Installation/Quick Configuration Demo
Distributed Feature
► Problem Determination
Date 02-28-1394
Originator APPC
Message number
Message type
Process name
D:\CMLIB\CMSTART.EXE
Message file name ACS.MSG
[ACS1231E: The link to remote address 444444444444 could not be
established. The XID negotiation between the local node and the partner
node was not successful.
EXPLANATION: Errors detected during the XID negotiation are preventing
the link between the local node and the partner node from being
established. The remote address identifies the partner node.
USER RESPONSE: One of the following reasons prevented the link from
Bmrd and Automated Fm Mdmwmn m WMf s New
> Automated Fax system, in the United States, call 800*426-3395
> Bulletin Boards
-QS2CM2 CFORUM
- In the United States, call 800-547-1283 for TaIkLlnk/0$288$
: "to the mm® East, and Africa, use to access OS2Ciyi2
CFQBUM via COHFBR on OS2BBS
- Online customer support for CM/2
; ^Pesodied in fnfonnadoh;::APARf?07033 ;
- 918-543*8200, protocol Mm
M 2 {OS2BF2) V ^
~ Topic ivOommunic^ohslanper/2-: MfiZj
~ Oeyeioper Connection, in the United States, call 80O-80BVCOM
~ APPC For um ' ;
> Developer's Assistance Program, m the United States, call 808-553-1623
IBM Software Solutions Center
- in the United States, calf 800-002-4777
- }n Canada, call 800-465-2222
- Outside North America, call 800-426-1774 (IBM International information)
? f BISUNK, search OttC8®S#@Ml;;
Summary
► Simplified installation/configuration
► Hardware detection
► Distributed Feature
* FFST/2 for problem determination
Submit suggestions for improvement
► Give it a try! j
CM03
Agenda
Communications Manager/2
Complex Configurations
CMQ3
Don Richards
Rick Schertz
Research triangle Park, NC
► Advanced Configuration Overview
- 3270 Configuration to multiple hosts
► Gateway Configuration
► 5250 Configuration including async dialup
► CIO Support
Advanced Configuration
► Required for some configurations
► Select ‘Advanced...’ pushbutton or 'Options’ on
menubar
► Guided profile lists
► Checkmarks
Configuration Definition ‘Options’
figuration Definition DEMO
Change workstation information..
Use advanced configuration
Verify configuration
To configure any of the items listed,
select one and select Configure.
Select Close when the configuration
is complete.
Communications Definitions
3270 Emulation through Tok
5250 Emulation through Token-ring
APPC APIs through Token-ring
5250 Emulation through Twinaxial for AS/400
3270 Emulation using SNA Phone Connections
1^3270 emulation through Token-ring to a host
Configure... | | Close '
r, Communications Manager Configuration List
Configure any profile or feature
To configure any of the items listed in the listbox, select one or
more items and select Configure.
Check marks indicate configuration for an item is complete.
Profile or Feature Name
Gateway - Implicit workstations using the gateway
Gateway - Explicit workstations using the gateway
X.25 links
X.25 directory entries
X.25 routing table
SNA Phone Connect - Connection Manager
SNA Phone Connect - Port Connection Manager
SNA Phone Connect - Protocol Driver
ISDN - LAN protocols using ISDN
ARTIC adapter without X.25
Configure.
OBJECTIVE
- Review quick configuration windows
- Configure 2 token-ring sessions, each to a
different host
- Configure 1 printer session
- PROCEDURE
- Type CMSETUP or Select CM Setup ICON
7 Select 'Setup' pushbutton from CMSETUP
- Choose configuration name
- Select 3270 emulation through Token-Ring
Agenda
► Advanced Configuration Overview
► 3270 Configuration to multiple hosts
► Gateway Configuration
► 5250 Configuration including async dialup
► CSD Support
! 1 Communications Mi-umcjor Profile 1 ist
3270 Emulation through PC Network
1?70 FimiUMiin ihrouph f oiixiiiKDm
3270Tnuilation through Pthfrnei (f WRAIID) network
3270 Emulation through Token-ring
3270 Quick Configuration
3270 Profile List
Number of terminal sessions
Number of printer sessions
| OK | | Advanced... | | Cancel | | Help |
Network ID
§§3270 emulation through token-ring to a host
All profiles listed as Required MUST be configured to support the pictured
configuration. Check marks indicate configuration for a profile is complete.
Action Profile Name
Local node name
Network ID
node name
■Connection information-
LAN destination address (hex)
Required
Required
Required
Optional
SNA local node characteri
SNA connections
3270 emulation
3278 SRPI
Number of terminal sessions
Number of printer sessions
OK Advanced.
Configure.
Fill in values, select ’Advanced
Local node ID (hex) |05D 11 |
i-SDLC information-
SDLC modem type £ Switched # Non-swltched
Station address (hex) |91 | (81 - FE)
Number of terminal sessions |l |
Number of printer sessions □
j OK | | Advanced... | | Cancel | | Help [
I .-ocal'ilnde .Characteristic
I Ok on Rincj or Other I AM I gpos Rl C Adapter Parameters
I nr.il l lrxie Op l iens
SNA Local Node Characteristics
Adapter |o~j« |
fi Free unused links
M Send alert for
beaconing
M Maximum activation
attempts
Maximum link stations
Network jD
lUSNETID
■Window count-
Send window count
Local node name
IXID12345
Receive window count
-Node type-
JjEnd node to network node server
no network node server
^Network node
Maximum [-field size
Percent of incoming calls (%) |0 j (8
Link establishment
retransmission count [8 | (1
Local node ID (hex) |95D | |12345 |
| OK | | joptions... | | NetWare(R)..~] | Cancel | | Help |
Retransmission threshold
|8 | (1 - 127)
|04 | (04 - 3C)
lUSNETID) I
Local node alias name
|XID12345
Maximum compression level |NONE
Maximum compression tokens |9
Optional comment |
tt Activate Attach Manager at start up
I OK I | Cancel"! I Help 1
C&SM LAN ID
3809)
Connection network
name (optional)
Cancel
| CohnocUons List
Adapter Hist
| Connection to a Host
SI 3270 Emulation
3270 Logical Terminal Untitled
Create a Connection
Create a Connection,
Choose the type of node to change or create connections
to nodes of that type.
Selecting a partner type will display connections to
nodes of that type in the list.
Select the local adapter to be used for this connection.
[HOST00O2
M Activate at startup
Local PU name |MPUQO001 | * APPN support
Node ID (hex) |05D| | ]
LAN destination address (hex) Address format Remote SAP (hex)
1 | |Token Ring ~~J B | |04 |
ithernet (ETHERAND) network
•Partner type-—
£5 To network node 0To fieer node ^Tohost
PC Network
Twinaxial
SDLC Adapters 0,1 Regular or User-dialed Connections
SDLC using SNA Phone Connections
Adapter
Number
lame Adapter
iQST 9801 | Token-ring or other LAN tiipes
Adjacent node ID (hex)
Partner network ID
Configured No
Adapter number llT
_ (Required for partner
Partner node name | | LU definition)
MUse this host connection as your focal point support
Optional comment
Continue... Cancel
3270 Emulation,
File View Options Transfer Help
Short session name
Short Long
Session Session/LU
Name Name Type Keyboard
Optional comment
-Type of connection-
J*5Coaxial (DFT) Session number |~| k |
^Non-coaxial Host link name |hqST0991
LU local/NAU address □ (1 - 255)
Color
LT ACSCENUS
3270COLR
LT ACSCENUS
LP
3270COLR
3270COLR
-Presentation space size-
5*525 x 89 (3278 / 79 mod 2)
5*533 x 80 (3278 / 79 mod 3)
5*544x 89 (3278 / 79 mod 4)
£528 x 132 (3278 / 79 mod 5)
J*5 Other R,»« Eli:
i Auto-start
S Activate presentation space print
Options
Enter a name under which you would like
to save this Information.
Character mapping
)ata transfer buffer size override
Vint options
Vint style
tuntime window status
^Logical terminal
Long session/LU name |LONGNAME
| OK | | Cancel | | Help |
^Logical printer
Cancel
Save as... ( | Cancel | | Help |
Select ’File' from menu, Select ’New'
Comment [§|
i
J Create... | | Chang;::...
| | Delete ]
| Close | | Help |
{ J2/0 Logical Prinler Untitled
Session I yj>e
j Keuboard UtilitLi - ACSCENUS
IHormal, Unprotected
Comment
|IBM Enhanced Keyboard - United States]
$ Logical terminal
& Logical printer
Short session name
User-defined workstation
code page for display
| OK. . | | Cancel |
Optional comment
•Type of connection
& Coaxial (DFT)
^Non-coaxial
OK Cancel
Host link name |HQST0Q01 _
LU locai/NAU address | [ (1 - 255)
Auto-start
Options
Code pages
Print buffer size
Print options
Print style
SNA data compression
Change.
Cancel
► 3270 Configuration to multipi® hosts
► Gateway Configuration
FI ||f2 F3 ||f* F9 F1 ° I 11
T
nm nnnrnnrnm
■ o w e 717717 i TT7iTT
■jJk iliiibiLL ihJLLl
State Definition
Shift: [F241
Base: [FI 2]
Alt: [+Cr]
Ctrl:
AltGr:
Niiml l:'
Gateway Overview
► Access host resources for downstream workstations
- up to 5 different hosts (Fiji’s), 254 sessions per PU
► Concentrate host definitions at the gateway
► Workstations access host via different media
*• Gateway can also be network node server
Downstream workstations supported:
- Communications Manager/21.0,1.1
- Extended Services
- Personal Communications/3270 2.0,3.0,3.1
- 3270 Emulation Program Version 3
- 3270 Workstation Program Version 1.1
- NS/DOS Version 1.0
- Other vendor products
Gateway Terminology
»- Dedicated LU
- permanent reserved LU from downstream workstation to
host ill: .
»- Pooled LU
- group of LU's from the host
- downstream workstation use next available LU from the pool
► Explicit Workstation
- define every downstream workstation at the gateway
► Implicit workstation
- gateway definition dynamically created
*• Dependent LU's supported
- 3270 emulator
- LUA applications
- LU 6.2 dependent LU's
Gateway network picture
Gateway Configuration
► OBJECTIVE
- Configure Gateway Host Link
- Configure Gateway Workstation Link
* PROCEDURE
- Type CMSETUP or select CM Setup SCON
- Select 'Setup' pushbutton from CMSETUP
- Choose configuration name
- Select 'Gateway' from Menu bar
- Select 'Configure'
; iot is. (•I.in;-K]cr Pro Mi e l is l
jf»HA local node ch<iracterist-ics
| [ Host LU Pool Definition
Gateway Hast LU Pools
LUPOOL 030 100 - 200
Host NAU Address Ranges
(^Gateway network communications definition
All profiles listed as Required MUST be configured to support the pictured
configuration. Check marks Indicate configuration for a profile Is complete.
At least ONE of the profiles listed as ^Required MUST be configured.
Action Profile Name
Required
^Required
^Required
Gateway - Hosts and host LU pools
Gateway - Implicit workstations using the gateway
Gateway - Explicit workstations using the gateway
Configure.
Gateway Host LU Pool Definitions
Host link name HOST8091
Auto Host
Logoff NAU Address Ranges
Change.
Automatic logoff
jff, None
Timed Minutes
Start NAU address |19Q
End NAU address |29Q|
j QK j | Cancel | | Help |
Gatov/ay Hosts and Host LU Pools
Gateway Hosts and Host LU Pools
To create or change gateway DLCs and workstation links, select Links.
To create or change workstation LUs, select an existing workstation link
and then select LUs.
To delete a workstation link and its LU definitions, select an existing
workstation link and then select Delete.
Workstation Number ol
Link Name Workstation LUs Comment
pDLC configuration-———-
Select a DLC type and adapter number for the logical link definition.
DLC type |t oken-rlng or other LAN types | B | _
Configured adapter numbers |9 |b|
rAvallable logical links--—_
To create a logical link definition, select Create. To change or delete
a link, select a link name from the list, then select Change or Delete.
To configure workstation LUs, select a logical link to use
in the workstation LU definition, then select LUs.
| Close | | Help |
| Change.."]
DLC configuration-
Select a DLC type and adapter number for the logical link definition.
DLC type |t oken-ring or other LAN types | B | _
Configured adapter numbers |s |b[
Available logical links-
To create a logical link definition, select Create. To change or dele
a link, select a link name from the list, then select Change or Delete
To configure optional host LU pools select a logical link to use
in the host LU pool definition, then select Pools.
To create or change gateway DLCs and host links, select Links.
To create or change host LU pools, select an existing host link
and then select Pools.
To delete a host link and its pool definitions, select an existing
host link and then select Delete.
Host Number of
Link Name Host LU Pools Comment
■HOS i
8
HOSTOOOI . 000
Remote; SAP (hex)
Implicit Works? jtions Using the C.atev/ai|,
Implicit Workstation* LUs
Workstation LU. Definition
implicit Gateway Workstations,
Implicit Workstations Using: the Gateway
Select the DLC type from the choices below. You may select
Configure DLC to configure that DLC type. You may also select
Implicit LUs to define the Implicit Workstation LUs.
Workstation link name WKSTOfifil
Select Create to create an implicit workstation LU definition.
You may also select an existing implicit workstation LU from
the list to Change or Delete.
Implicit LUs over Token-ring or other LAN types
-Workstation LUs-
LU Workstation Host Host Pool
Name HAU Address Link Name NAU Address Name
DLC LUs
Configured Defined
Host link name
■Implicit workstation LUs-
Host Host LU Workstation
Link Name Pool Name NAU Address
VII configured DLCs
Workstation link name WKST8881
LU name
WKS1LU2
Workstation NAU address
Optional comment
JCPooledJ Pool name
% Dedicated Host HAIJ arlrires-
Optional commenl
Close
Host link name
IHOSTG001
Pool name
ILUPOOL
Workstation NAU address
Addresses mobile computing environment:
- use SNA applications from home, traveling, or
wherever there is a phone line
► Advanced Configuration Overview
3270 Configuration to multiple hosts
Connectivity supported:
- SNA applications over asynchronous lines
(Switched/Non-switched)
- SNA applications over synchronous lines
(Switched/Non-switched)
- Hayes AutoSync protocol support
- ¥2S,bis Autodial and Autoanswer
► Gateway Configuration
► 5250 Configuration including async dialup
CID Support
Asynchronous Connectivity Support
~ Workstation with COM port or Adaptors configured as
semi port and Modems 100% compatible with Hayes AT
command set
Synchronous connectivity support
- bit oriented I L25bis Autodial and Autoanswer for
synchronous modems that implement VJtSbte
~ Synchronous adapters
v IBM Multiprotocol Communications Adaptor for ISA bus
» IBM PS/2 Multiprotocol Adapter/A for Micro Channel
* IBM WAC for Micro Channel and ISA bus
► Hayes AutoSync (SDLC and X.2S)
~ Workstation with COM port or Adapters configured as
serial port and Hayes Compatible AutoSync Modem
► OB JECTIVE
- Review quick configuration windows
- Configure 2 sessions, each to a different
AS/400
PROCEDURE
- Type CMSETUP or Select CM Setup ICON
- Select 'Setup' pushbutton from CMSETUP
- Choose configuration name
- Select 5258 Emulation using SNA Phone
.’‘id I mill.iiiiin thrmiijh l J ( network
')/>'.Lj;iulii!iui~ llU'Hii|li l : wijiijx-j: lor
5250 l.iiuilMlion lliroui)h E Ihornoj (F I HI.RAHI)) Me'tv/ork
‘ij‘ o i,iimi.n<f»n tiifnii|i), ! .i>rG
5250 Network Layout
5250 Quick Configuration
Network ID
Network ID
Network ID
AS/400 2
(USEAST.AS4002)
-5250 informatlon-
Partner LU name
Local node ID
-5250 Information-
Partner LU name
APPN
Network
-5258 Information-
Partner LU name
■ Connection Is to a network noc
Mode name
Host type Information r f, AS/400 #S/36
Host type information AS/408 Jg/s/36
■ Connection is to a network node server
■ Connection is to a network node server
-SDLC information-
SDLC modem type ^Switched Jfllon-switched
Station address (hex) fjjT] (01 - FE)
-Connection information—
LAN destination address
Number of terminal sessions
Number of terminal sessions
Number of printer sessions |p |
| OK | | Advanced... | | Cancel | | Help |
Number of printer sessions
Ik] I Advanced..
AS/4001
(USEAST.AS400NN)
rTwinaxial information-
Controller address [F] (0 - 6)
1 llhis
is a PCMCIA compatfcle m<
Number
of terminal sessions [T^
Number
of printer sessions [iP
E
| Advanced.. | | Cancel |
5250 SNA' Phone Connect Quick Configuration
5250 Profile List for SNA Phone Connect
. 5250 Emulation: using SNA- Phone Conncejions
Network ID
Local node name
Local node |D (hex)
|USEAST
|RAL 12345
[05D 1166668
p5259 information-
Partner LU name |USEAST.AS499NN
Mode name |QPCSUPP ~| I B I
Host type information # AS/400 3*5 S/35
g Connection is to a network node server
pSDLC information-
Modem connection |AutoSync
Station address (hex) ED (01 - FE)
Number of terminal sessions |l |
Number of printer sessions |0j |
| Continue.."] | Cancel | | Help |
Modem Connection Information
Modem Definitions
IBM PCMCIA Data/Fax Modem
IBM PCMCIA High Speed Data/Fax Modem
l|BM PCMCIA 14.4Kbps Data/Fax Modern
BM PS/2 14.4Kbps Data/Fax Modem Adapter
Practical Peripherals PM1440OFX PS/2 Internal Modem
Practical Peripherals PM14400FX V.32bis Internal Modem
Practical Peripherals PM9600FXMT Modem
User-Defined AutoSync Switched Connection Modem
Phone number
Alternate phone number
Port name
Encoding scheme
■ Inactivity timeout
|C0M1 111
|NRZ1 | ■ |
| | f i - m.
ii } f.omm uni cations Man acjor Profile I 1st
OK Advanced... Cancel
(§5250 emulation using SNA Phone Connections to an AS/400 or a S/36
All profiles listed as Required MUST be configured to support the pictured
configuration. Check marks indicate configuration for a profile is complete.
The Connection Manager profile listed as ^Required should ONLY be
configured for switched connections.
Select profile, then 'Configure.
Port Connection Manager Configuration
Connection Manager Configuration
.Outgoing: Call Directory Entry
lljodem/Liire characteristics
lltl-l I*;;/'/ I'l.'lKbps |)ata/l ax MoHem Arlapb
|Mudeiii/l me charm: I eris lies
Connection Manager
Port Connection Manager
The PCM list is based on the Modem connection you select. Select a PCM, then select
either Configure to add the PCM information to the configuration or Delete to
remove the PCM information from the configuration.
Entry name |SNAPHQNE_l]~
Modem connection |AutoSync
Currently Configured Subfields
PCM
>BM PCMCIA 14.4Kbps Data/Fax Modem
Status
Not configuij
’radical Peripherals PM14490FX PS/2 Internal Moc Not conflgur
’radical Peripherals PM14496FX V.32bis Internal P Not configur
’radical Peripherals PM9600FXMT Modem Not configur
Jser-Deflned AutoSync Switched Connection Mod* Not configur
'ailed party number
Cancel
SNA Features
| SNA Features List
To create, change, or delete a definition of a feature, select a list
item, then choose the appropriate action.
r SNA feature information--
Local LUs
Partner LUs
Transaction program definite
Transaction program default
Transaction program securiti
Conversation security
LU to LU security
CPI Communications side info
BLANK
ttBATCH
BBATCHSC
SINTER
ttINTERSC
CPSVCMG
CPSVRMGR
SNASVCMG
ttBATCHC
ttBATCHCS
]■] 5250 Emulation
5250 Emulation,
|USEAST.AS4002|
Partner LU name
File View Options Help
Short Long
Session Session
Name Name Type Partner LU
A A LT 5250PLU
Keyboard Color
ACSCENUS 5250COLR
QPCSUPP
WINTER [s| I ACSOENUS 111 I 5250COLR 111
Bi 0250 emulation
Duplicfctte Session
5250 Emulation
File View Options Help
Short Long
Session Session
Name Name Type Partner LU
Keyboard
Color
5250PLU
QPCSUPP
Short session name
Long session name
Optional comment
|SessHon to AS4QQ2 through NN server
Agenda
> 3270 Configuration to multiple hosts
CID Overview
► Configuration, installation, and Distribution
► Unattended installation and configuration of
OS/2 software
- Mass instaliation/configuration
- Application querying/updating configuration
and installation ............
- Help Desk Support ^
Communications Manager/2 CID Commands
► CMIMAGE - copies diskette images to hard
drive
► CMRECORD«builds response file from: existing
configuration
► CMSETUP /R - install/configure using response
file
CID Scenario
Administration Task
• Run CMIMAGE
to copy
CM diskette files
to Hard Drive
■ Create Model
Configuration
and Exception
Response Files for
Target Workstations
Distribution Task:
* Send files from
Administrator’s
Workstation to
CM Code Server
Installation Task:
* CMSETUP /R Command Entered
* Model Configuration & Exception
Response Files Processed, User
Configuration Pile Created
Communications Manager/2
CID Tips and Techniques
► Response file migration (/MG parameter)
► New response fife (/CR parameter)
► Supported connectivities
► Using a model configuration
► Sample response files (UPGRADE.RSP,
RBNSTLmP}
► CMUPDA TETYPE = 1 or 2 (works the same)
► Copying and deleting profiles
► Working with keyboard profiles
*> Using CMRECORD output
» Needed CM Code Installed
from CM Code Server
* Installation values
CMUpdateType = 1
CMWorkstationT ype = 1
CMTarget = D:
CMModelCFG = X:\MODEL
CMUserCFG « D:\CMCONFIG
* Configuration values
Enhanced_keyboard = (
name = group2kb
copy = modelkb
souree_cfg = X:\model
GMInstallROPS = 1
CMtnstallKeylock = 0
CMUserExit = X:\CMEXiT2 parm
Enhanced_keyboard = (
name = oldkb
delete
^ Configuration Utilities
► Keylock Configuration (KEYLOCK.EXE)
► Replace Default Configuration (CMREPL.EXE)
► Verify Configuration (CMVERIFY.EXE)
► Upgrade Configuration (CMUPGRAD.EXE)
► Problem Determination
- PMDSPLAY.EXE, DISPLAY.EXE
- QSYSTEM.EXE
- CMOUERY.EXE
- CHK4DLLS.EXE (Productivity Aid)
► Copy Configuration
- OiSBKCFG.CSiD
: -CMRSTCFG.CMD
* on Network Administrator Sample Program
diskette
► Guided path for advanced configuration
► Use of profile lists
► Common configuration interfaces
► CID support for volume installations
► Go for it!
Connection/Feature Combinations
WKST COmBCVON TYPE VS FEATURE OR APPUCATION
ConnectionI 3270 5250 ACDI1 APPC CPLC LUA IaODI X.25
.. .. . ■ _ Redir APIs APIs APIs APIs APIs
T °mler f i!Sr?!ypes ° Q ^ ^ v/ V
Ethernet O Q V Q V s/
PC Network Q Q ^ Q V V
Coaxial (DFT) O
Twinaxial V Q V >/ V
Asynchronous V .
SDLC Q Q n/ n/ -J
X.25 ' ■ s/ V n/ n/ s/ : V
SDLC using SNA Phone 0 Q %/ n/ s J
X.25 using SNA Phone "V ^ ^ ^ ^ ^
IDLC using SNA Phone ^ ^ ^ n/
Q indicates that quick configuration is available
' y indicates that this combination is available
Configuration Fifes
Oo^fysunJoatiorm Manager Configurmion Rtes ■ |
"■ File
Type
Description
EE
ES
CM '
\CML 1 B\config name. CFG
Binary
CM configuration life
containing Non-SNA data
X
X
X
\CMLI8\configname.NBF
ASCI!
CM node definitions file
confining SNA data
X
\CML 1 B\conf igname. CF2
Binary
CM SNA configuration file
X
; x
\CM 1 IB\configname,$EC
Binary
CM security file
X
X
\IBMGOM\PROTOCOUNI
ASCfi
NTS/2 (LAPS) and SNA
; Phone configuration file
X
X
\CMLIB\NETWORK.INI
ASCII
; Port connection
manager configuration file
X
\CMUB\swftchtype.CXM J
OR
\CMUB\configname,CXM
Binary
; Connection
manager configuration file
X
CM04
Communications Manager/2
Building SNA Applications
CM04
\BM - Networking Systems
Research Triangle Park* NC
_ AGENDA
• API’s Available
- EHLLAPl
. CPI-C
. APPC
• Other APIs
APIs AVAILABLE
• EHLLAPl - Emulator High Level Language API
- Requires a 3270 or 5250 emulation session to host
• GP8*G - Common Programming Interface for Communications
- SNA LU 6,2
- Portable toother platforms
• APPC - Advanced ProgranHo-Program Communications
- SNA LU 6.2
• Other APIs
- LUA - LUs 0,1,2,3 to host
- System Management - Define/defete/manage SNA resources
EHLLAPl
worksiafion-i
application
* Applications can act as a programmed operator
- Simulate users
- Simplify use ofexisting host applications
- Monitor response Urn© and availability
- Consolidate complicated tasks
- Automate console operations
iHLLAPI Services
«Six Service Groups
- Curator Services
- Presentation Space Services
^Device prvices
- Communication Services
- Utility Services
- Window Management Services
Building an EHLLAPI
Application in C
API Support
- Header file - HAPLC.H in \APISUPP\CM_H on the CD-ROM
- Library - PHLL.C_S.OBJ in \APISUPP\CM_LIB on the CD-ROM
Samples on CO-SOM - \APISUPP\HAP!
- HSMPLC - IS bit C
- HSMPLC32 - 32 bit
Other samples on CD-ROM - see \ARSUPP\HAPf.DOC
- HSM PLM - Macro Assembler
- HSMPLC8L - COBOL
- HSMPLBAS-SASIC
- GMMACRG.CMD - REXX file for record/playback keystrokes
- QTJMECMD - REXX file that queries the host time
Programming With iHLLAPI
References
- EHLLAPI Programming Reference on CD-ROM
- VIEW \DQCS\IMREHLLREF
Language Support
REXX
BASIC
COBOL
Macro Assembler
AppUcalioii Support
- EHLLAPI Virtual Device Driver
- Run DOS EHLLAPI Appiicatibhs with CM/2
EHLLAPI Code Example
Function prototype
extern void bllapi( m far \
:: char far*
' in! far*,
in! far*);
f^ne^ncaftsisttax
Int apifync~ 3 L. /* send */
ciw flpisfilns fMAKJS£EE|; .
mm
inf aplret; - .
;bl£ag$&^tee,; ®g5h&rts& itsplra);
©©bugging an EHLLAPI Application
Return Codes
- Gheek each call's return cede before continuing
- Documented in EHLLAPI Programming Reference
• Use CM/2 Trace Facility
-Start API Irace sweat-EHLLAPI
-Trace example
m BEQ 6 HUAPI C«nwctPS< 0 »}
~r**~ ft&Kdfiaa iw»aoo ie«oirt*«ooi eftaeafKwsooa-cooo
API W5*> EHUAW Oowwct PS (01$
F5C=OOOOt.«=«)Ot l»=O014-«W1 ER~WOO-OOCO-«eOO
AW WEO £NLLAPi SandKa? \Q$)
f?6O*(}fiB0 U^cOOOa i&=0014-4}£!0t gR«/»604«KMM»&
API PSP SHlim Sand Koy(03}
RC^tKW LK^»62 lC*0S14WK}St1 ERiftQOOdXKHKKm
Programming With CPI-C
« References
- Common Programming interface Communications Reference (SC2&4399-0B)
~ Application Programming Guide on CD-ROW
VIEW \DOCSMNF\APPLPROG
- APPC Programming Reference on CD-ROM
VIEW \DOCS\JNF\APPCREF
* Lapgyag® Support
-c
- COBOL
-FORTRAN
- REXX. ' :
Common Programming Interface for
Communications (CPI-C)
Peer f® peer or eltentfssrvsr applications
Portable across multiple platforms
Commtjnieatfens Mensger/2 supports CPf-C Architecture
Building a CPI-C Application
• Include Files
- In \APISUPP\CM_H on the CD-ROM
- CMC.H * include in C programs
~ CMREXXGPY - include in REXX programs
• Libraries
- In \APISUPP\CM_UB on the CD-ROM
- CPI&IIB - Link with C programs
»®2-BK Support^
- Documented in Application Programming Guide
- Supported with IBM C SET/2 compiler
Writing a CPI-C Program
C Code Example
. SAMPLES? SAMPLES! SAMPLES!
- Located in \APSSUPP\SNA on the CD-ROM
. C PROGRAMS
- Build 16 and 32 bit samples
~ APiNG.DOC
- AREXEC.DOC
-AJEtt. DOO
- CPICRLE.DOC
• RBmPROQMMS
- CRCREXX.DOC
~ Sample C code
Staeiade r CPl-C «««» f
ws^nodDiiar kb/hs *Siff^iSstfesamtSonmtm® *i
/'CPI^cefwawatfealB ♦/
C& 8 JNT 32 to;
r CPS-C & a ea8 based intense® */
. ■■ f Feremeteram */
"*8J; f 8 cfeam padded with fefcm&s +}
d{rc™CM..OK){
^5h*s cm!r^c«8!rv8assdcc0»®fuJ *■(■ ,,,
} efcs«{ '
/* She cmirdt caii fedied *,<
handle the em*r send re&jrn */
. *
REXX Code Example
Debugging Your CPI-C Program
Include flies
- In WISH FP\GM_H on the CD-ROM
- APPCLC.H - verb control block structures
- APPCDEF.H - constants, opcodes, return codes
References
- APPC Programming Reference on CD-ROM
VIEW \DOCS\!NF\APPCREF
- Application Programming Guide on CD-ROM
VIEW \DOCSUNFWPUPRQG
Libraries
- In \APISUPP\CMJJB on the CD-ROM
- ACS.LIB - Link with C Programs
t|Piyaie;Sypp#it :
COBOL;
mmA
32-BH Support
~ See documentation in Application Programming Guide
- Supported with IBM 0 Set/2 compiler
Writing m APPC Program
samples? samples! samples!
- located in \APiSUPP\$NA on tie CD-ROM
- APPCTELLDOC - sample APPC program written in C
* ttafpfy! PrograsfitBilEf Hints
- Link with either ACSXfB or include import statement In .DEF file
- APt^ program stack size should be at least 4500 bytes
- Allocate data buffers in shared storage
- Multiple processes can share a tpjd
Debugging Your APPC Program
Each APPC veifi ha& gurimaif afld secondary retym csxSes
- Return codes are documented in the APPC Programming Reference
- Check each verb's primary return code
- If the return code is not .APjQK then check-secondary return code
- Secondary return codes provide granularity
- Start API trace event - APPC
- Trace, example
am mmmm awc / , /
tmmm
mmm id? i7C3e»S^ A^SPCTSP*'
mnmm 484^^40 40404040 40404040 <LL4~—
momm. mom® mmom <.—._
mom® mom® mom®
mmm® Jmmm.- mm . __
%2‘A2imm
Other CM/2 APIs
* LUA' - Conventional Logical Unit API
« Supports LU Types 0,1,2, and 3
- Basic Interface - RUf (Request Unit Interface)
- High Level Interface - SLI (Session-level Interface)
- Reference on CD-ROM
- VIEW \DOCS\INF\LUAREF
- Language Support
» 0
► COBOL
> MASM
- Samples on CD-ROM
- \APISUPP\LUA
LUA Code Example
#fndud© “tU : r LUA deflm* and $$rwt Irtcluefe 8le *[
extern!* pw^ ASLtprPtotype V ;
LUAJ/BSBlRECGHD LeaVerb;
hmV&®Pv~M.mVi!ihi
imtmxmmtti usu**& - imywmjsui .
Laave? « ti«ioft$fflNJCrte tCAjceMMQNj * 4;
iuaVer^-cemm wJMELtJfs^sie «• LUAjopce^siLOPS^
memq^<LagVsrl5.comn^Jaa_!u5^a,LU„f4a^Mrfe^UJ^n»)^
LuaVerb.com monJ u ajdataJength » ste©of{tol?SettftU);
luaV0rb.cwnmemluaucia«a4rtr »{clw PtfttS) AtaftSeffMI;
l0aVerfecommo«?.lua^ost_barK80 = (umlgsml JongJUaerRamSeir!;
tuaVtaspeci^©^^
SytluaVarbWF)? f CalttfceSUAPJ *7
il(LttaV©ftammon.a^^
I .
ItClUaVerbxemmon.luajJrliTij'el» LUAJ3K) {
/* Art, error hae occurred */
}
Other CM/2 APIs
• System Management API (cortt)
- Reference on CD-ROM
- VIEW \DOCS\INF\SysyGREF
- Language Support
► C
- COBOL
- Samples on CD-ROM
- WISUPPV3NA
Other CM/2 APIs
System Management API
- Display verbs
>■ General eonftg into
- Current operating values lor SNA nodes
- Subsystem Management verbs
- Managing sessions, links, TPs DLC's
- Configuration verbs (LU’s & TPs)
- Management Services verbs
Summary
CM/2 offers SNA API's
API’s to fit a wide variety of environments
What are some things you would its® to see?
Stop fey the demo booth for more information
Avoiding Common Problems and
Problem Determination with
Communications Manager/2
ernes
Rick Schertz
Jeff Hicks
Research Triangle Park, NC
Agenda;
-/ Avoiding Problems
- Identifying sad Resolving Problems
- Solutions t© Common Problems
► Future Directions
Hardcopy Documentation
frsclyded wttb CM/2 product package:
-ysefsCtiMe
- Workstatloni installation and Conftpiratlon {M8®
: / - Configuration Foster : .
•... •* Ouiek Snstaiafion Card
■ mrn&iMmmmmm plications, ceil I-WMBM-7282.
: Descriptions of alt ftardcopf ptsbicatloflis and part numbers
(P/N) as well as online references are listed In the-
Bibliography section of the online Overview.
Online Documentation
■ -mm :■ ■
llfp : illl jlfiii;
CM/2 Diskette Packaging
WMfe New
Overview
Command Reference
Message Reference
Problem Determination Guide
AH books avaiafele In one or
mom of the following formats:
► PostScript
* IFF VIEW
* BookManager
- AFP UST38BD
Enhanced Publications
■ W2 Read Me (READ* . mf.
Kf* n s WU l n , til ■ - ips fisk spam $ & y &mmi b
~ Bn fa ■ - II
► Gonfig m
-Gulc' ard
~ Worl cat taxation and Gortfig > ih u - a
1C j f ^ Pp£ ,• 111:;’"'
•:.:p:p^f . l Ig .in©e;’V j ' • ='.‘
► Network Ad..iinIsferai 3>ri/Cds - i y ? ■-btf
- Network Administration and Subsystem Management Guide
.-. Scenarios
:■ - Host Connection Reference ::
— Host Print Gukte
► Problem Determination Guide
information APARs
■ 1SQ68 04 - Startingia Commyffl cations. : ftfenagei':.Trace. .
: : 8888315 - finding the cause of problems using CM/2 :
f iiaTOOt -' SA Gateway Information AFAR
APAH - Aythotod Program to ilysis Report
- dMumm md cd~rqm
~~wmm*rxri®m< ■ - . tom
- All Information APARs m In y/ -rrn^t
~ Includes 1st of correct. Ms
- If you have access to CompuServe, check the OS/2 Developers
Forum 2 <0$2DF2> library forihe file OM^FOJZIP which
Reading Online Documentation
*> OS/2 VI l Wafc s • K ; 11 ft
- Doubt Cl ' < oi i® if ?;;i ; :^ : :- V SS^ . .^
- Rui III 1 li k iame Iffi ih - i si : :
ilHPi# $ ed o i cd-roi it i ; tcmw ■ PmMMtgM
||§§^ mager Boo* ||| §j c
fflSIifca M k
- View with READ/2 Library Reader program. READ/2 is Installed on
the CD DEMEA0CH2 to view all books.
- $T$t r , Mimtmns
. h. :. r.:: '. ;.-
> Postscript format {.IPS files, CD-ROM only)
-Lo«lii\DOIMISI?S
- Dopy the file to a postscript printer (e.g. ’copy filename Jb Iptl’) or
: V drag the bock loon from; the drives folder to the postscript printer
Icon Httif-i
► AFP UST$B2 format {,120 Mbs, CD-ROM only)
-Located in )B& $\U$T3280
~ Use LPM2€ mk ztmiy kid m print on a personal inset printer
Where to go for Help
» 8uftet!n 8&an c a \ to. sited Pax Information in Whet's N&w
* Automated Fax system, Irs the United States, call 800-425-3395
> Bulletin Boards
' ■ ■ ; >~ GSSCgi&GFPRyM; ■ / ■.;■:•'
/ * In the United Slates, call 800*547*1283 for Ta1ld.ink/0828BS
*• In Europe, the Middle East, and Africa, use BIAL-ISM to access OS2CM2
S'£mm 8 e mm: m osaiss :
; ■ : ~Gnfl mcm . tei s upp&rt for Cf$/2
■if y I h ? 1107833;;.
- 313-543-82Q0, protocoi N&1
:■ j|;| Select ‘0’ to dowetead CMIMFO.ZIP»latestInfermatloii APARs :; ; :
«> GaropuServe, OS/2 Sevelepe? Forum 2 <OS2l>R2):
~ Topic 1, Communications Manager/2
- Developer Connection, in the United States, call 80D-5DEVCON
iiiii^BSiisSi;
.^Developer's i • e togram, m the United States, call 808-553-1523
| IBM Software Solutions Center
- In the United States, call 800-882-4777
- In Canada, call 800-485-2222
~ Outside North America, call 800-428-1774 OBIS International Information)
. WmmK search on CM2IMFO - -
Identifying and Resolving Problems
- Activate/Deaetiwat© Network resources
► Trace Services
- Capture API, subsystem, fine flow traces
- Formats raw trace data
► Additional Utilities
FFST/2 Components
User View
(Start Here}
Internal View
FFST/2
OS2MLQG.DAT Message Log
= message: log ;; ' Formatter
Communications
Manager#
MESSAGE LOCFOR^ATinSR
Probe point'
System
LOGQOOt -DAT Error Log
£ error log Formatter
Probe poirtt-
FFST/2
recording
FFST/2
Dump
Formatter
_ mp
dump fifes
Probe point
Probe point-
DUMP FORMAT!!
SNA alert
EPWALERT.DMP
Alerts or Customized
Dumps
LAN Network
Transfer ^
MS Data To network manager Net /tew)
First Failure Support Technology/2
FFST/2 - Icon View
fl'i Message Log Formatter Message Console
PEI System Error Log | | Start FFST/2
| | Dump Formatter Stop FFST/2
► Message Log Formatter
«• System Error Log
► Dump Formatter
- Message Console
» Start or Stop FFST/2
Message Log Details
CMR9176W: A workstation requested an activate physical unit (ACTPU)
from the gateway, but the gateway has no explicit or Implicit LU definition
for the workstation.
USER RESPONSE: The error log contains a corresponding entry that
Includes the link name, destination address, adapter number, and DLC
name of the workstation that was requesting an ACTPU from the
gateway.
Double click, press Enter, or select 'Open as details.^ from Message Log Formatter
Contains luft message text pkis a User Response and Help
I^syge1#ip : m# : dfrect theusertothe System: Ert^rLog#^
» Problem ED - tinle^ie randomly gerteraied value used to.cross-reference thismessage-.
i ■ : : ^tli;;eeeoetated
- Probe ID - Identifies the location in the source code that triggered the message
FFST/2 Message Log Formatter
| Uossayo Lug 1 onnati.er C \Ob.!VjYt> rtf l\0‘JJ( HOC. D«T
I File Selected Edit View Optl
06 VERIFY CFG0096I: Verification for conflguratlc
04 VERIFY CFG0076I: Verification for configuratii
57 VERIFY CFQ)096I: Verification for configuratii
55 VERIFY CFG007SI: Verification for configuratii
43 VERIFY CFGO096I: Verification for configuratii
42 VERIFY CFG0076I: Verification for configuratii
39 SNAGATE CNR0176U: A workstation requested an ai
38 VERIFY CFG0096I: Verification for configuratii
37 VERIFY CFG0D76I: Verification for configuratii
21 VERIFY CFG0077W: Verification for configuratii
20 CONFIG APN0437E: Parsing of the node deflnltlt
20 CONFIG APK0488E: The required paraneter ‘DESTI
20 CONFIG APN0404E: Coanand , DEFIIC_L0GICAL_LI»:'
19 VERIFY CFG007SI: Verification for configuratii
i C:\CM05\DEHO\CN05GV.CFG has ended. Ho
l C:\OttS\DEBO\Ctffl5Gtf.CFG has started. .
1 C:\CM05\DB5O\Cttt5GtJ.CFG has ended. No
l C:\CH05\DEKO\Cta5GV.CFG has started,
l C:\CM05\DENO\CNa5Gtf.CFG has ended. No;
i C:\CMOS\DEHO\CMQ5Gtf.CFG has started,
tivate physical unit (ACTPU) froa the ga
1 C:\CM5\DEMO\CM05Gtf.CFG has ended. No
j C:\CM0S\DEBOSCM05Gtf.CFG has started,
i C:\att5\DeH0\CH05Glf.CFG has ended ulth
is file failed.
JATI0N_ADDR£SS 1 Is not specified. This j
on line 12 of the node definitions file!
l C:\CH05\DEWHCN05Gtf.CFG has started.
■ AH Communications Manager/2 Messages are collected and displayed in
■reverse chronological order
Double click a message for details
■ Default system error log file is \OS2\SYSTEMVOS2MLOG.DAT ■
• Reference - Problem Determination Guide
System Error Log
| FH e E dit Jptions_ Uelp_
| VERIFY [ACS] 07-28-1994 18:45:3485
| Verification for configuration C:\CMG5\DEMO\CM05GW.CFG has ended. Ho error or
| warning conditions were found.
SNAGATE [ACS] 67-28-1994 18:45:42.66
I CMR8178: A workstation requested an activate physical unit (ACTPU) from the
i| gateway, but the gateway has no explicit or implicit LU definition for the workstation.
1 IBMTRNET [ACS] 07-28-1994 18:46:37.50
1 ALT2501: ALERT: A remote station attempted to Initiate a logical link, but there are no
link stations available at the local station.
_i_i_:__i_:_i jli
Displays ali messages that occur on the system as the occur
Similar to a SYSTEM console log on a S/390 host system
FST/2 Installation
- CM/2 wHJ not Install FFST/2 tf currently install version Is newer than the
~Uw-
- B&WA8E1 Some older versions of 082/2 end LAW Distance will Install a
version of FFST/2 that Is older than WB004TO even If a more recent version Is
- Automatically enabled by CM/2 Installation
rm OS/2 ServKJeabity and Diagnostic Aida - a
- • y S
RUN~C:\OS2\$Y$TEM\LOGDA£M.EXE
mm New. with latest FFST/Z not added for GMt
mtc£~c u *w t
RLW~C;\GS^£P.WQDR'3.EXE
a ' on rc c
1.1 which shipped WR00440
RUN==C:\OS2\EPWROUT.£XE 1
-Other CM/2 Error Log files
~\CMLfB\CM.LOG
► Error messages that occur during installation or removal of CM/2
§>iS * Errors logged; here only if the EFS172 interface is not available / ;
III- * Also contains fist of CM/2 features currently installed
: ~ \cmub\bxx.lqg.
- Existence indicates unpacking error during installation
- \CMLiB\CMRiN$T.L0<5
- Errors and progress messages generated during a CSD installation
- vCML!B\UPGRAD£.LOG '
- \CMLfBWERIFY.LOG
* Contains messages and m i
Error Log files
* Text file containing error or informational messages concerning
devices installed using LAM Adapter and Protocol Support {LAPS}
- if running LA H configurations, always check this log for errors
Up Error Messages
Communications Manager: IBM I MIL 1
ALT2501: ALERT: A remote station
Qy attempted to initiate a logical link,
but there are no link stations
available at the local station.
| OK; | [ Help |
PM Prologs instead of old lull screen pop-ups
Pop-ups can be enabled/disabled through FFST/2 interface
sage m mole Options ng SK : 3iilll!S
- » n EPW MS0*ON|OFF on command line
‘ * - gepopups • - X?
- This text file can contain up to 200 message numbers. If an error
occurs but the corresponding message number is present in this file,
the ‘W or sk Q will not pop-up.
Pop-up dialogs are present in the window or -task list
~ Only one dialog of the same message number wili be displayed at a time
Subsystem Management
JService Options Help
: j-Configuration file information
I Active CM05GW
Service
jSNA subsystem
X.25 physical links
; SNA X.25 virtual circuits
Default SCHERTZ1
- Displays status #ail
,m Started, Starting, Stopping, Stopped ■ : > |?
| Kfete/Seactlvate individual services ./l/f
- Olspfaysactsve: and^defauh €M/2 configuration fifes i
> Open additional details on SM& Subsystem and X.25 Services
Subsystem Management
Command Line Utilities
*• Command In® functions useful for remote operators
interested in network management or problem
determination
- CMGUERY - displays status of CM/2 services
- DISPLAY - used to display SNA network resources
- CMUN&S - activate/deactivate logical links
- CMOIX - activate/deactivate Data Link Controls
- CMTPS - activate/deactivate Transaction Programs
~ CMNETB - display active NETBIOS sessions, used for
ROPSESP
- CMEMUL - activate/deactivate 3270 or 52S0 sessions
- located on first Productivity Aids diskette
Formatting Traces
: Selecting Format trace will format the specified trace fl
1 based on the parameters selected below.
| Trace Input file ACS2591
-Output file format and name
O Summary only
'J Detail only _
■SlBoth _ACS2591.SUM
API event selection-
® Format all APIs
: Q Format no APIs
:j Format selected APIs
rs» Format all DLCs
□ Format no DLCs
:j Format selected DLCs
: -Formatting options--
□Uppercase hex
! : □Interleave raw trace with detail trace
: □ APPC API - Conversation ID
* Select ‘Formal Trace 1 from Fife pulldown menu on the Trace main panel ,
- Usea pravtoi^ly aavecl trace tile as Input
- Formats raw trace data to show high level trace flows In a summary file or
Interprets trace data within a detail file
► Can now Interleave raw and formatted trace data In the same output file
- API and Line flow filters limit amount of Information displayed In output files
Command Line Trace
ICMTRACE
- Used to START, STOP and SAVE trace data
- Can specify trace API®, DLCs and EVENTS
- Formats a raw trace file
- Can specify options to create summary and detail files
► CMTRSTOP
- Used in conjunction with CMTRACE, will stop traces
when a specified message is issued on the system
■111: ~ Located on the Productivity Aids diskettes
* APPNT.CMD
- Batch file that starts basis LAN connectivity traces
| APPNF.CMD
- Us® after running APPNT.CMD, copies and formats
traces
Trace Events (continued)
19 X.25_AB>I EVT_1
20 X »2 5 _JDIiC
21 TWINAXIAL
22 SRPX „2
23 X*25_JU?X XmEWia*
24 X. 25 „APX QTHREAD
25 LUA
26 3270„GRAPHICSJt
27 3270„GRAPHICS„2
29 ETHERAND
30 EUBSYSM System Management Verbs <iaostiy X.25)
31 APPC„EOCAI»_JPA$B For testing APPC applications locally
32 BLUR, :
33 MB Support for NetWare-
Trace Events
01 .
APPCjCCB
: ' COmmahd 'doAfetbl. blbeks • Ibfcweip- 3&C/DLC
02
appc_iht
Internal APPC API cells
03
APPtLJ»ROCBSS
APPC Process dispatcher
04
appc„sm>rcv
APPC send/rbbaive signals
05
APPCJKIB
SID exchange when a link is established
06
ACDI
09
BFTDItC
10
IBMPC&ET
11 : :
SDLC
1111
SERVICE S„INT
13
SRPX„X
14
2BMTR3SE0?
15
3270„1
3270/5250 keystrokes
SM
3270„2
ELi&FI
mM
5250„1
5250 function entry and control blocks
18
5250^2
not used
CMPD
- CHS PD collects problem defermisiatfomt date amid archives It Into k
single file .
* Saves system and &W2 kotiilgwk&m and i environment data
- CHS/2 cojiflgyratloo md respond flies
- All logs In CMOS
: - ProtocoOni aod network„mi :
FFSB2 error logs and dump lies :
~ Comsfig.sys
- Output from APPQ display ^
, - Output from PSTAT
- Output from QSYSTEHI
- Output from CI8QUERY r
- SYSLEVEL information
- Command cars be ryrs remotely and tbe output file collected
wltlimit local assistance
- Syntax Is T^PD filename {C&/2 Driver! {LAPS Drived
0pmm | | i
- Bun \CMUB\CM2ME01C an remote machine to instali/mmove
:y ; : ^^M0rnid : AFTPTP§ md definitions needed for remote
access
- A SUITE TPs include ATELNET, AFTP, APING, AftEXEC, ATELL
AG0PY,. ANAME
► MWSTAT.EXE
; - Display status of connection to Novel Netware server
► APING.EXE
~ APPC sample program
:: - Use to verify SNA network connection to a known partner
- CM/2 slips OS/2 version, other versions available on
CorapyServ
► CMEVENT.EXE
- Waits for a specified message to occur n times
- Used by CMTRSTOP.CMD, but can be used by other
: applications
Distributed Feature clients fail to run CM/2
- Symptoms are typically random errors, traps,
programs fail to load, etc..
- Verify that your server is configured to allow a large
number of files to fee open simultaneously
- CM/2 typically opens 50-60 flies per client
- For IBM LAN Server, this value is MAXOPENS and
MAXSESSOPENS in the IBMLAN.INI
• ACS2501 - Not enough link stations available
aUi ■ hi.1 I ‘ iH
• Check Logical Links display in Subsystem
Management
Agenda
- Avoidino Problems
► Identifying and Resolving Problems
v, Solutions to Common Problems
- Future Directions
Common Problems (continued)
SDLC adapter will not load
- If MCA machine, SDLCJ5 must be ARB 1, SDLCJ must
be ARB 7
- ISA feus SDLC adapter requires Interrupt 3 and 4
3270/5250 print fails
- verify that you have the correct printer Queue name
configured in Emulator Print Control
- Information APAR1107677,1107678,1107680
ROPSESP clients fail to run
Be sure to examine the Information APARS included with
your eonferen®© CD-ROM
Common Problems (continued)
Agenda
Wmr when
inm i. i ci
- SAM Phone Connect discussed in What's New
► Cannot 'Start Communications'after installing
0 W21 ft m&r CM, 2 I,v •••'■ ^ r ;'
•*» Delete & recreate aiii&onsthMp&mt to
, - Me -- I - , f/s
► Avc
* Identifying and Resolving Problems
► Solutions to Common Problems
^ Flic, e Bim Mn s
Future Directions
► Combine all FFST/2 utilities into ©rse integrated
program
- All error data in one location
| ini i, tor finer error
|II■; ; . r : .V;
Summary
EKSS23 ZZZSZZZZZZSSSZSK rs KSE-SS: -, , ■ SZSZZZSZZZZZi * ■■ . ZZ.ZZ, 7Z 3 ■ ■>-- ZZ ZZ ZZ~ - !S :■■-■■■■■■■■• ■■■ - ,
► Us© the documentation and be aware that most
of it is a miiabSeor^ilri©
► Onli felp is ivailabie through User Forums
► • Sw , fete : Items fe I it - sg the
* • IS errors
:|;ll||;:: Wiii: rf to jpg errors here
► Examine other error logs as required
► s - si EM/2 a ip
f§p§§j| ||p|||f il itiihrtpiti pf) with |* | itpilp|fff.ifin?
1 - 919 - 254-4957
CMOS
Intra-enterprise diversity
« homogeneous —heterogen*
« host based applications —as-
distributed, client server applications
® decentralized decision making
heterogeneous networking protocols
(C) IBMCwporetoflim
• Add applications independent of transport network
• Simplify the network
• Extend the reach of applications across multiple networks
• Protect investment of existing applications and hardware
• Multiple active protocols
a Applications bound to protocols
® Complex code management tasks
® Applications independent of transport protocol
a Multiple application services and support
® Transport network flexibility_
The Networking Blueprint
Applications
Multivendor
Application Support
Multiprotocol
Networking
Subnetworking
Systems Management
(C) IBM Corporation 1994
Common Transport Semantics
for NetBIOS over TCP
Open MPTN Architecture
• Standards Bodies
- X/Open Guide: MPTN Architecture available January 1994
- Detailed MPTN specifications expected by year end
- Participating in AppleTalk Networking Forum
• Vendors
- ki Research announcement (DECnet over SNA)
- Oracle endorsement
- Proginet announcement (OSI over SNA)
- ProTools endorsement
- PeerLogic endorsement
(C) IBM Corporation 1994
Multiprotocol Transport Networking
• Applications
independent from
transport
m Transport user
partners must match
• Connection and
connectionless
mode transport
services
® One or more
transports below
Common Transport
Semantics
9 Ability to add
protocols above or
below
1
(C) IBM Ccrportfton 1994
Challenges in Building Multiprotocol
Networks
• Function Compensation
• Address Mapping
• Transport Gateways
• Network Management
(C) IBM Corporation 1S94
Functional Compensations
Required by Transport Providers
Transport User Services
User
Expedited
Multicast Data Records Stream.
function lacking,
needs compensation
• Every transport provider lacks
functions supported by other
transport providers
$ Compensations are common
solution for multiple protocols'
missing function
® Compensations are minimal
• Compensations required only
when transport user requests
services not provided by
transport provider
(C) IBM Corporation 18$4
MPTN Address Mapping Examples
Asgorithmlc
Protocol Specific
Directory
MPTH
Address
tapper
\ 9.|67 -2.15
/ \
USIIBMNR LU350GR
NetBIOS name
Address Mapper
NetBIOS name
NETID.LU
2 Step Process:
• TCP network ID mapped to
SNA network name (table
lookup)
• TCP host ID generates LU
name (algorithmic)
TCP domain name server
extended to store user
address and protocol
identifier
Transport user and transport
provider association registered
in address mapper
(C) IBM Corporation
MPTN Transport Gateway
MPTN
Access node
Native
• Interconnects two networks with different transport protocols
• Supports native systems
• Supports parallel gateways
(C) IBM Corporation
Multiple MPTN Gateways
MPTN
Access
Node
MPTN
Access
Node
® Enhanced gateway to gateway flows provided by OSI
Inter-Domain Routing Protocols
(C) IBM CwportSfon 1994
^ MPTN Network Management
<t) Each environment wifi be managed natively and separately
by resource specific managers, e.g. SNA/MS, SNMP, CMSP
<* Coordination management identifies problems that appear at the
application as a result of problems in the transport layer
<d Customer investment in existing management products protected
(C) IBM Corporation 1994
Currant MPTN Products
AnyNet Multiprotocol Combinations
. SNA over TCP/IP
• Sockets over SNA
• Sockets over NetBIOS
. NetBEUI over SNA
Platforms:
• MVS/ESA
. OS/2
. OS/408
. AIX/6000
• Windows (Beta)
SNA over TCP/IP
CICS/ESA DB2 IMS/ESA CICS OS/2 DCAF
AnyNet/MVS
AnyNet/2
OS/400
AIX/6000
(Beta) Windows
AnyNet/MVS
AnyNet/2
OS/400
AIX/6000
Windows (Beta)
o APPC over TCP/IP
o Emulators and printers over TCP/IP
o Provides full VTAM session initiation flexibility
(C) IBM Corporator! 1994
Sockets over SNA
FTP HOST NFS PING TALK TELNET X Window System SNMP
AnyNet/MVS
AnyNet/2
OS/400
(Beta) AIX/6000
AnyNet/MVS
AnyNet/2
OS/400
AIX/6000 (Beta)
• TCP/IP sockets applications such as file server
available over SNA backbone
• Available over VTAM V4R2 APPN
(C) IBM Cwporatton 1994
Any Net/2 Sockets over NetBIOS
• New function: Sockets (DCE services) over
NetBIOS LAN
• Incorporated in IBM DCE for OS/2
(C) IBM Corporation 1994 jfct $WSM'
NetBEUI over SNA
• Extends OS/2 NetBIOS applications such as Lotus Notes
and IBM LAN Server over SNA
k
k
(C) IB^ Corporation 1994
AnyNet Gateways
Multiple AnyNet/2 Gateways
Native TCP/IP
Native TCP/IP System
Connects isolated TCP/IP networks across SNA network
Multiple AnyNet/MVS Gateways
Native SNA
Native SNA
System
• Connects SNA networks across TCP/IP network
(C) IBM Corporation 1894
AnyNet Performance
Transport Protocol Throughput on OS/2
bits per Second (In Minions)
• Performance with AnyNet
mirrors that of the
transport protocol.
. For files larger than 8K,
AnyNet/2 Sockets over
SNA was faster than native
TCP/IP.
• For flies 8K and under,
throughput was similar for
SNA, TCP/IP, AnyNet/2
Sockets over SNA and
AnyNet/2 APPC over
TCP/IP.
. Results on MVS were
similar.
(C) IBM Corporator 1894
AnyNet Summary
Access Node
• AnyNet Feature of VTAM V3R4.2 and V4R2 • AnyNet/2 V2.0
-SNA over TCP/IP - SNA over TCP/IP
- Sockets over SNA - Sockets over SNA
- OS/2 downloadable ® AnyNet/2 NetBEUI over SNA
• AnyNet/6000 Features of . AnyNet/400 in AS/400 V3R1.0
AIX SNA Server/6000 _ APPC over TCP/IP
- APPC over TCP/IP _ Sockets over SNA
- Sockets over SNA (Beta)
m AnyNet for Windows
- APPC over TCP/IP (Beta)
Single or Multiple Gateways
® AnyNet/MVS SNA over TCP/iP Gateway (in VTAM AnyNet Feature)
® AnyNet/2 SNA over TCP/IP Gateway (BETA)
® AnyNet/2 Sockets over SNA Gateway VI.1
(C) IBM Corporation 1894
Technical Assistance
Dept AB7/ Bldg 502
P.O. Box 12195
Research Triangle Park, NC 27709
VM: MPTN at RALVMS
Internet: mptn@vnet.ibm.com
CompuServe: !GO MPTN
OS2BBS and
TalkUnk: ANYNET CFORUM
Fax (questions): 919-254-4029
(Q IBM Corporation 1&©4
Manager/2 APPIgfrace
Capability
APPC Market Enablement
IBM Networking Systems
Research Triangle Park, NC
appcmrkt@vnet.ibm.com
APPCMRKT at RALVM6
919-254-4957
Agenda
- Starting and Stopping CM/2 APPC Traces
- Go through the panels
- Command line interface
> Formating Traces
« How to read CM/2 APPC Traces
-»Where to start
- What to look for
- How to determine where the problem
(0 IBM Corpefstkm 1i84
r Application Testing Tips
■ Traces can be your best friend
■ CM/2 APPC Traces show you
- What APPC/CPI-C call was made
- The parameters supplied to the call
- Return code(s) and status indicators returned from the call
- Any network flows which occured
- Any data received or sent
(C) IE&3 Corporation 1884
Communications Manager/2 Folder
Problem Determination Aids - Trace
Manaqe 327Q/ 525 0 Sessions tteyiock Subsystem Management
imjm
Proble m Oe tenwnofion Aids -Toace Problem Detenninofson Aids - Dump Command Reference
" iff
Message Reference Overview Communications Manager Setup R»ad Me
rill
Sfesjt Communications Stop Co<nmunio:^ons Abnormally Replace Default Configuration
CAPS Stop Communications Normally
Trace Services Window
To start or stop traces, select a product and one or more trace selections.
Then press Start or Stop.
Pfoduct |Commun icatio ns Manage r .
-Trace selections-
APIs X>LCs
ACDI .. H [dFTDLC
APPC I iETHERAND
EHLLAPi I jSBMPCNET
LUA_RUI Iff IIB MTRN ET
LUA_SIJ I lIDLC
MANAGEMENT || |SDLC
Trace status INACTIVE
Events
3270*...'.|
3270_2 fl
3270_GRAPHICS_1|
3270_GRAPHICS_2>|
S2S0__1
5250^2 1
Viewing inactive traces
Tra^e filename
To start or stop traces, select a product and one or more trace selections.
Then press Start or Stop.
Product j Communica tions Man ager
Trace status INACTIVE
Trace selections
APIs
ACDI
APPC
EHLLAPi
LUA_RUi
LUA SLI
' (MANAGEMENT
£LCs
DFTDLC
ETHERAND
IBMPCNET
IBMTRNET
SDLC
SDLC
Events
APPCICCB
APPC_INT
APPC_LOCAL_PAT
APPC_PROCESS
APPC__SNDRCV
APPC XID
Viewing inactive traces
Trsi£.e filename j
v Starting the APPC Trace
To start or stop traces, select a product and one or more trace selections
Then press Start or Stop,
Product [Com munica tions Manager
Trace status ACTIVE
Trace selections
APIs
ACDI
EHLLAPI
LUA__RUI
LUA_SL1
MANAGEMENT
SERVICES
£LCs
DFTDLC
ETHERAND
IBMPCNET
IDLC
SDLC
>SPA_ROUTER
Viewing Inactive traces
I Tra£e filename
Events
3270”l 1
3270_2
3270_GRAPHICS_1!
327Q_GRAPHICS_2|
S250_1
5250 2
r
[CAtracejaping TOCICS3
>
APING version 2.4 APPG echo test with timings
Allocate duration:
2828 ms
Program startup and Confirm duration: 318 ms
Duration Data Sent
Data Rate Data Rate
(msec) (bytes)
(KB/s) (Mb/s)
160 200
1.2 0.0010
J
(C) IBM Corporation 1894
" w Stopping the APPC Trace
To start or stop traces, select a product and one or more trace selections.
Then press Start or Stop.
Product jComm unications Manage r
Trace selections
APIs
Iacdi
EHLLAPI
LUA_RUI
LUA_SU
MANAGEMENT
SERVICES
&LCs
1 DFTDLC
ETHERAND
IBMPCNET
IDLC
SDLC
iSPA__RqUTER
Viewing inactive traces
Trace filename
Trace status ACTIVE
Events j
327(0 ' B |
3270_2 1 i
3270_GRAPHICS_1< I
3270_GRAPHICS_2! I
5250_1 ; I |
5250 2 M |
'mT»
Specify the file name to use for saving problem determination
data.
filename | *.TRcj ______J
Path ©TRACE l£rive jc:.Iff
Directories Files
(0 IBM Corporation 18$4
Formating the Trace File
(C) IBM Corporation 1894
^ Selecting Typei(s) of Trace Files to Produce
Selecting Format trace win format the specified trace file
toased on the parameters selected below.
Trace input file | c;vfRACE \WAYNE.fRC .
j Output fife format and name.~.~~.——1~
j Mammary ©nfy ® g
$§Retail only
Mioth]
ic:\TRACE\W AV NE.SUM
IC:\TRACE\WAYNE.DET
m
m
m
m
API event selection
Si Format a§8 AP8s
toil Format no APIs
HfitFormat selected APIs
A PUS
Line flow event selection
DFormat a8§ DLCs
Fojmat no DLCs
Siffi Format selected DLCs
ACDf ||
ETHERAND □!
APPC
IBM PCM ET ■
CPiC ■
IBMTRNET H
EHLLAPI [!i
8 DLC p
LUA RUI H
MPTNBTCP ■
Other Format Options
m
OS/2 Tracing With Command Line Interface
m Using APPNT
... Starts tracing function in Communications
Manager
- Execute APPNT command
Performs same functions as CM panels, but
command line often easier to use
« Using APPNF
- Use after APPNT
... Execute "APPNF xxxxxxxx" where xxxxxxxx is
file name you want to use for trace output
- Stops trace and creates three files
xxxxxxxx.TRC, .DET, .SUM
w
* APPNT.CMD File
(©ECHO OFF
REM ** START TRACES after resetting the trace buffer
REM ** TRACE APPC and services verbs, Token ring Data and
REM ** APPC events 1 2 3 4 5 and 12
REM ** event 1 = internal DLC interface
REM ** event 2 = APPC verbs
REM ** event 3 = internal APPC flows
REM ** event 4 = APPC send and receive
REM ** event 5 = XID flows
REM ** event 12 = Utility verbs such as error log entries
REM ** storage 3 uses up to three 64K segments for traces
REM ** For other options in tracing enter "CMTRACE ?"
ECHO ON
CMTRACE START -reset -api appc services -data ibmtrnet -event 1 2 3 4 5
12 -storage 3
Start with the .SUM File
* The .SUM file is the trace summary file
* Shows
- Verbs or calls issued
- Network flows
- Return codes
* Will show you quickly if you ever got out of the box
* Has three columns
- Conversation ID, DLC, line number
- API
- FLOW
w APPNF.CMD File
@ECHO OFF
REM ** STOP TRACES (trace data remains in storage)
REM ** COPY TRACE from storage to disk file in the current directory
REM ** File name is specified as a parameter and the extension is
REM ** .TRC for the full trace,
REM ** .DET for the detailed trace and
REM ** .SUM for the trace summary.
REM ** For other options in trace formating enter FMTTRACE ?
REM ** If you want tracing to continue with the same type, then remove
REM ** the CMTRACE STOP line.
ECHO ON
CMTRACE STOP
CMTRACE copy %1 .trc
FMTTRACE %1 .trc +d +s
.SUM File
FMTTRACE
(C) Copyright IBM Corporation 1990, 1991, 1993
-Line- -Tpld-- -Convld- .API-
-Line- -DLC— #-DA-LFSID .Flow-
5 00000000 00000000 .GetType.—.>
9 00000000 00000000 <-GetType(0xO001,0x00000001)-
i -i .. (TOCICS3 )->
15 <~ (CM_PROGRAM PARAMETER,CHECK)—
17 .CMINIT(APINGD ).-->
19 <~CMINIT(CM_PROGRAM_PARAMETER_CHECK)-~
21 ..CM!NIT( )->
23 -TPStrted(Df lt,CP IC_DEF).>
103 1c68779b <-TPStrted.
Ill 8c00af85 ^.CMIN!T(CM_OK)..
123 8c00af85 .CMECT..>
125 8c00af85 <-CMECT(CM_MAPPED_CONVERSATION.CM_OK)-
127 8c00af85 .CMEMN->
^ Move on to the ,DET File
« The .DET file contains expanded details from the
.SUM file
® Easy to correlate .DET to .SUM by line number
m Shows
_QgU Qf Ygfb details
- Options used
- Return codes
- SNA sense codes
As a Last Resort go to .IRC Fite
■ Not used very often
■ Have your SNA formats manual handy
« Find your friendly VTAM systems programmer
DET File
FMTTRACE
(C) Copyright IBM Corporation 1990,1991, 1993
Uno: 9 API return
Time stamp: 14:37:02.63
GetType
|| Primary return code * PARAMETER_CHECK
|| Secondary return code * BAD_TPJD
|| TP ID =■ 0x0000000000000000
|| Conversation ID * 0x00000000
|| Conversation type - Basic
Lin*: 13 CPI-C request
Timestamp: 14:37:02.63
CM I NIT
|| Symbolic destination name * TOCICS3
Line: 15 CPI-C return
Time stamp. 14:37:02.84
CMINIT
|| Return code * CM_PROGRAM_PARAMETER_CHECK
Une: 17 CPI-C request
Timestamp: 14:37:02.84
CMINIT
|| Symbolic destination name * APINGD
OS/2 Trace Example
■ Sequence of events
- APPNT
- APING TOCICS3
- APPNF aping
* aping.sum
* aping.det
► aping.trc
APING TRACE EXAMPLE
Every things OK
158 8c00af85 CMECT->
160 8c00af85 <-CMECT(CM_MAPPED_CONVERSATION,CM_OK)—
162 8c00af85 -CMEMN->
164 8c00af85 <-CMEMN(#INTER,CM_OK)-
167 8c00af85 --CMEPLN->
170 8c00af85 <-CMEPLN(TOCICS3,CM_OK)-
173 8c00af85 CMESL->
175 8c00af85 <-CMESL(CM_NONE,CM_OK)-
177 8c00af85 --CMSSL(CM_CONFIRM)->
179 8c00af85 <-CMSSL(CM_OK)-
181 8c00af85 —-CMSPTR(CM_PREP_TO_RECEIVE_FLUSH)~>
183 8c00af85 <-CMSPTR(CM_OK)-
185 8c00af85 CMECT->
187 8c00af85 <-CMECT(CM_MAPPED_CONVERSATION.CM_OK)—
189 8c00af85 CMEMN->
191 8c00af85 <-CMEMN(#INTER,CM_OK)-
194 8c00af85 -CMEPLN->
197 8c00af85 <-CMEPLN(TOCICS3,CM_OK)-
200 8c00af85 -CMESL->
202 8c00af85 <.CMESL(CM_CONFIRM,CM_OK).
FMTTRACE
(C) Copyrlghl IBM Corporation 1990,1991,1993
-Lino- -TpkJ- -ConvId- -API-
-Une- --DLC— » -DA LFSID Flow-
5 00000000 00000000 -GetTypo->
9 00000000 00000000 <--GetTypo<0x0001, 0 x 00000001 Y -
13 -CMINIT(TOCICS3)->
15 <-CMINIT(CM_PROGRAM_PARAMETER_CHECK)~
17 -CMINIT(APINGD )->
19 <~CMINIT(CM_PROGRAM_PARAMETER_CHECK)~
21 -CMINIT( )->
23 -TPStrted{D1l1,CPIC_DEF)->
103 1 c68779b <-TPStrted-
111 8c00a185 <-CMINIT(CM_OK)-
123 8c00af85 -CMECT->
125 8c00af85 <-CMECT(CM_MAPPED_C0NVERSAT10N,CM_0K)-
127 8cOOaf85 CMEMN->
129 8c00a185 <-CMEMN(,CM_OK)-
131 8c00a185 CMEPLN->
134 8c00af85 <-CMEPLN( ,CM_OK)-
136 8c00a185 -CMESL->
138 8c00a185 <-CMESL(CM_NONE,CM_OK)-
140 8c00af85 -CMSPLN(TOCICS3)->
143 8c00a185 <-CMSPLN(CM_OK)-
146 8c00af85 CMSTPN->
149 8c00a185 <-CMSTPN(CM_OK)-
152 8c00a185 -CMSMN(#INTER)->
155 8c00af85 <-—.CMSMN(CM_OK)-
204 8c00a185 -CMALLC->
216 1 c68779b -McAiloc-xHTOC IG83 P INTER. APINRLT. •
589 IBMTRNET 00 40002060063104 10202 ' .BIND rq.>
643 IBMTRNET 00 40002060063104 10202 <.BIND +rsp-.
844 IBMTRNET 00 40002060063104 10202 .FMtS.CNOS.
884 IBMTRNET 00 40002060063104 10202 <.Solicited PM(8).
931 IBMTRNET 00 40002060063104 10202 <.CNOS.
1112 IBMTRNET 00 40002060063104 10202 .SoBdled IPM(1).a
1429 IBMTRNET 00 40002060063104 10302 .BIND rq.>
1489 IBMTRNET 00 40002060063104 00204 <.BIND rt|.
1723 IBMTRNET 00 40002060063104 00204 .BIND +rsp-.>
1791 IBMTRNET 00 40002060063104 00204 <.LUSTAT rq-.
1868 IBMTRNET 00 40002060063104 00204 .Soliciled PM(1).a
1912 IBMTRNET 00 40002060063104 10302 <.BIND +rsp-.
2087 1 c68779b 9e11719b <.McAltowil*-..
2101 8c00a185 <-CMALLC<CM_OK)-
2103 8c00a185 --CMSPTR(CM_PREP_TO _RECEIVE_FLUSH)->
2105 8c00a185 <.CMSPTR(CM_OK).
2107 8c00a185 .-CMSST(CMJ3UFFER JDATA).
2109 8c00a185 <.CMSST(CM_OK).
2111 8c00a185 .-.CMSEND(3).>
2127 1c68779b9e11719b ..-McSendDaia(3,None).>
2131 1c68779b9e11719b <--McSencDala(0x0001,0x00000006).
2135 1c68779b 9011719b .McSendDala(Ox0001,0x00000006) >
2146 1c68779b9e11719b <.McSendDaia.
2150 8c00a185 <.CMSEND(CM_OK).
2153 8c00a185 .-.CMRCV(128).>
2166 1c68779b 9611719b .-.McRcvWai1(128).>
2171 1c68779b 9011719b <.McRcvVfejl (0x0001,0x00000006).
2176 1c68779b 9011719b .MsRcvWai1(Ox0001,0x00000006).>
2217 IBMTRNET 00 40002060063104 10302
-FMH5,ApplDala-
: * r Allocate Comand from .DEI file
Line: 216 API request
Time stamp: 14:37:03.56
McAllocate
|| Wait object = 0x00000000
|| TP ID = 0x1c68779b70ef5f35
|| Sync level = Confirm
jj Return control = When session allocated
11
ii
Conversation style = i wo-Way Alternate
/-y__+:___ i n» _ r\^,r\r\r\r\c\r\r\r\
vX)s ;v€iDauu>! y i p — 'jauv/uv/uvuv
Dn I I ! ■=— TAPIPOO
I 0.1 U I O' I 0.1100 — I UUIUUU
|| Mode name = #INTER
|| TP name = APINGD
j| Security = Same
Line: 589 Send MU
Timestamp: 14:37:04.91
DLC type: IBMTRNET
Adapter number: 00
Destination address: 40002060063104
ALS ID: 0810779B0FEF5F35
||TH: FID2, Exp, OIS, LFSID«0x 10202, SNF«0x0009
||RH: RQ, SC, FI, OfC, RQD1
BIND rq
|| Type « Negotiable
|| FM profile « 19
|| TS profile-7
jj FM usage - primary:
|| Chaining use - MuIttpie-RU chains allowed
I! Request control mode * Immediate request mode
II Chain response protocol * Definite or exception response
|| Two-phase commit * Not supported
j| Compression m Will not be used
|| Send end bracket * Will not send
jj FM usage - secondary:
|| Chaining use * Multiple-RU chains allowed
|| Request control mode * Immediate request mode
jj Chain response protocol * Definite or exception response
jj Two-phase commit * Not supported
|| Compression * Will not be used
jj Send end bracket « Will not send
h
{CJBMCarjwraJsi IBM
|| FM Usage - common:
|| Whole BIUs required = No
|| FM header usage = Allowed
|| Bracket usage and reset state = Brackets are used and reset state is INB
|| Alternate code set allowed = No
|| BIND queueing allowed = No
|| Normal-flow send/receive mode = Full-duplex
|| Recovery responsibility = Symmetric
|| Contention winner = Primary
|| Alternate code set = ASCII-7
jj Control vectors included = Yes
|| Half-duplex flip-flop primary reset state = Send
|| TS usage:
|j Secondary to primary pacing stages = One
jj Secondary send window size = 1
|| Adaptive pacing = Supported
|| Secondary receive window size = 0
|| Secondary maximum @end RU size = 512
|| Primary maximum ©end RU size = 512
|| Primary to secondary pacing stage© = One
|| Primary send window size = 0
jj Primary receive window size = 1
II PS profile:
|| LU type 2 6
|| Lb-6 level a 2
|| Conversation-level security = Accepted
|| Already-verified indicator = Accepled
|| Synchronization level supported = Confirm
|| Session reinitiation responsibility = Operaior controlled
|| Parallel sessions supported = Yes
j| CNOS supported = Yes
|| Limited resource = No
|| Length-checked compression options = No Compression
II Cryptography options:
|| Private cryptography support = No
|| Session-level cryplography support = No
|| Primary LU name * USIBMNR.NR50EF1I
jj SVuclured user data:
j| Mode name * SNASVCMG
|| Session instance Identiner = 0x01 s?513574«f5f35
|| Network-qualified PLU name = USIBMNR.NR50EF11
|| Secondary LU name = USIBWTO.TOCfCS3
|| Fully qualified PCID confroi vector:
|| PCiD = 0xdb710aa34313040a
|| Network qualified CP name = USIBMNR.NR50EF11
|| COS/TPF control vector:
|| Transmission priority = Network
|| COS name = SNASVCMG
w
APING TRACE EXAMPLE
Error Encountered
Looking at the Trace „DET file
Line: 505 API return
Timestamp: 17:03:46.28
McAllocate
|| Primary return code = ALLOCATION_ERROR
|| Secondary return code = ALLOCATION_FAILURE_NO_RETRY
|| TP ID = 0x1 c68779bb3ef5f35
j| Conversation ID = 0x00000000
|j Sync level = Confirm
|j Return control = When session allocated
j| Conversation style = Two-Way Alternate
jj Conversation group ID = 0x00000000
j j Sens© data = OxfffeO110
II Partner LU alias = TOCICS3
j| Mod® nam© = #JUNK
|| TP name = APINGD
jj Security = Same
Looking at the Trace .SUM file
212 8c00af84 -CMALLC—.—>
224 1c68779b —McAlocale(TCX;iCS3 1 #JUNK l APINGD)—>
309 IBMTRNET 00 40002060063104 10202 .FMH5 CNOS-
347 IBMTRNET 00 40002060063104 10202 <.Soiidled IPM(64)-
394 IBMTRNET 00 40002060063104 10202 <.CNOS.
497 IBMTRNET 00 40002060063104 10202 .Soiidled IPM<1)-
505 1c68779b 00000000 <—McA]|ocate(0x00O3,0x00000004)-
519 8c00af84 <-CMALLC<CM_ALLOCATE_FAlLURE_NO_RETRY)-
Tracsng with CM/2
■ Use the own LU feature of OS/2 with ES or CM/2 to
test on single machine
■ Keep a trace of the working program around for later
reference
■ Get Aping package
■ Get Getsense package
Put APPNT and APPNF commands on all
workstations
West Coast Distributed Object Consultants,
IBM Personal Software Products
Copyright VNR, 1994. Reprinted with permission
from Client/Server Survival Guide with OS/2
CSOl
Robert Orfali
Pen Harkey
Client/Server Survival Guide
Robert Orfali
Pan Harkey
CSSent/Server Survival Guide
•nfli
That m$ definitely
the easy
part of our trSpf
CORBA
/^Nothing fir^
seem* te be in this
Theg/Earthling .
^\Jietie«arylJ/r
Copyright VNR, 1994. Reprinted with permission
from Client/Sewef Survival Guide with OS/2
Copyright VNR, 1994. Reprinted with permission
from Client/Server Survival Guide with OS/2
Client/Server Survival Guide
Copyright VNR, 1994. Reprinted with permission
from Client/Server Survival Guide with OS/2
Copyright VNR, 1994. Reprinted with permission
from Client/Server Survival Guide with OS/2
Refeerf Mali Robert Orfali
Pan Hertay _Client/Server Suftfitfal Guide Pan Harfcey _ Client/Server Survival Guide
/ Post-Scarcity?
Copyright VNR, 1994. Reprinted with permission
from Client/Server Survival Guide with OS/2
Copyright VNR, 1994. Reprinted with permission
from Client/Server Survival Guide with OS/2
Robert Orfali
Robert Orfali
!lf|jtes&; ' -
._ 4
■
Client/Server Survival Guide
Client/Server Survival Guide
Copyright VNR, 1994. Reprinted with permission
from Client/Server Survival Guide with OS/2
Copyright VNR, 1994. Reprinted with permission
from Client/Server Survival Guide with OS/2
Robert Orfali
Pan Hai
Client/Server Survival Guide
Robert Orfali
Pan Harkey
Client/Server Survival Guide
Copyright VNR, 1994. Reprinted with permission
from Client/Server Survival Guide with OS/2
Copyright VNR, 1994. Reprinted with permission
from Client/Server Survival Guide with OS/2
Client/Server Survival Guide
Robert Orfafi
Pan Harkey
Cl lent/Server Survival Guide
.
Client
Copyright VNR, 1994. Reprinted with permission
from Cllent/Server Survival Guide with OS/2
Client/Server Survival Guide
Superclletrt
Mlzed Parallel C
Copyright VNR, 1994. Reprinted with permission
from Cllent/Server Survival Guide with OS/2
Copyright VNR, 1994. Reprinted with permission
from Cllent/Server Survival Guide with OS/2
Pan Harkey Client/Server Suftfitfal Guide
>
Copyright VNR, 1994. Reprinted with permission
&
a...
from Client/Server Survival Guide with OS/2
Rob<
fali
Harkt
ay
Client/Server Survival Guide
Copyright VNR, 1994. Reprinted with permission
from Client/Server Survival Guide with OS/2
Copyright VNR, 1994. Reprinted with permission
from Client/Server Survival Guide with OS/2
Copyright VNR, 1994. Reprinted with permission
from Client/Server Survival Guide with OS/2
R©lb@rf ©rfali
Pars Harkey
Client/Server Survival Guide
Copyright VNR, 1994. Reprinted with permission
from Client/Server Survival Guide with OS/2
Robert Orfali
Pan Harkey
Client/Server Survival Guide
051 Reference Mode I
Peer-to-Peer
5ervlces API
CPI-C ' services Ar
APPC .Common
^ '“Transport
Semantics
Copyright VNR, 1994. Reprinted with permission
from Client/Server Survival Guide with OS/2
Stacks, Stacks, and more
Stacks! Don't you Earthlings
m ever get any real work done?
Copyright VNR, 1994. Reprinted with permission
from Client/Server Survival Guide with OS/2
Robert Orfaii
Robert Orfali
Pan Harkey
Client/Server Survival Guide
Robert Orfali
Pan Harkey
Client/Sertfer Survival Guide
Copyright VNR, 1994. Reprinted with permission
from Client/Sefv/er Survival Guide with OS/2
Copyright VNR, 1994. Reprinted with permission
from Cllent/Server Survival Guide with OS/2
I always wanted
to have my own bank.
Heh....heh....heh.„.
Network
Make your
deposits here!
Robert Orfali
Dan Harkey _Client/Server Survival Guide
Robert Orfali
Pan Harkey
Client/Server Survival Guide
Distributed File Service
File Servers
Copyright VNR, 1994. Reprinted with permission
from Client/Server Survival Guide with OS/2
Copyright VNR, 1994. Reprinted with permission
from Client/Server Survival Guide with OS/2
Ribert Orfai!
Pan Harfcey
Robert Orfali
Pan Harkey
Client/Server Survival Guide
/ Objects?
Copyright VNR, 1994. Reprinted with permission
from Cllent/Server Survival Guide with OS/2
Copyright VNR, 1994. Reprinted with permission
from Client/Server Survival Guide with OS/2
Database
Administrator
Stored SQL Stored
Commands Procedures
Tables
Stored SQL
Command s
Copyright VNR, 1994. Reprinted with permission
from Client/Server Survival Guide with OS/2
Vendor A Vendor 3 Vendor C
Client Client Client
SQL API
SQL API
SQL API
Driver
Driver
Driver
$tdckb
Vendor A
Patabaee
Administrator
Vendor 3
Patabaee \A-n%Tr r
Admlnietrator
Administrator
Si
ff
,
1
Stadkp
Vendor C
Copyright VNR, 1994. Reprinted with permission
from Client/Server Survival Guide with OS/2
Robert Orfali
Pan Harkey _Client/Server Survival Guide
Information Hound
Copyright VNR, 1994. Reprinted with permission
from Client/Seri/er Survival Guide with OS/2
Robert Orfali
Pan Harkey Client/Server Survival Guide
Copyright VNR, 1994. Reprinted with permission
from Client/Server Survival Guide with OS/2
Robert
Part Ha
Copyright VNR, 1994. Reprinted with permission
from Client/Server Survival Guide with OS/2
Client/Server Survival Guide
Copyright VNR, 1994. Reprinted With permission
from Client/Server Survival Guide with OS/2
Robert Orfali
Pan Harkey
'Sewer Survival G
ipil
L ^
1000 Connections
ransactfon
500 Mbytes of RAM
+
10,000 Open Files
50 Shared Connections
25 MSytes of RAM
+
500 Open Files
Robert Orfali Robert Orfali
Pan Harkey Client/Server Survival Guide Pan Harkey _ Client/Server Survival Guide
Copyright VNR, 1994. Reprinted with permission
from CUent/Server Survival Guide with OS/2
Copyright VNR, 1994. Reprinted with permission
from Client/Server Survival Guide with OS/2
Robert Orfali
Pan Harkey
Client/Server Survival Guide
Robert Orfali
Pan Harkey
Client/Server Survival Guide
Copyright VNR, 1994. Reprinted with permission
from Client/Server Survival Guide with OS/2
Copyright VNR, 1994. Reprinted with permission
from Client/Server Survival Guide with OS/2
Meet Offali
Robert Orfali
Pan Harkey _Client/Server Survival Guide Pan Harkey Client/Server Survival Guide
7\pp[lcatloir
'Application}
Standards
Committee
Copyright VNR, 1994. Reprinted with permission
from Client/Server Survival Guide with OS/2
Client/Server Survival Guide
Copyright VNR, 1994. Reprinted with permission
from Client/Server Survival Guide with OS/2
Copyright VNR, 1994. Reprinted with permission
from Client/Server Survival Guide with OS/2
Copyright VNR, 1994. Reprinted with permission
from Client/Server Survival Guide with OS/2
Client/Server Survival Guide
Robert Orfali
Pan Harkey
Robert Orfali Robert Orfali
Pan Starkey _Client/Server Survival ©yide Pan Harfoy _ CSSenf/Server Survival Guide
Copyright VNR, 1994. Reprinted with permission
from Client/Server Survival Guide with OS/2
Copyright VNR, 1994. Reprinted with permission
from Client/Server Survival Guide with OS/2
Reberf Orfali
Pan Harkey _Client/Server Survival Guide
Robert Orfali
Pan Harkey _Client/Server Survival §ajide
Mall Front End
Document Views
VIM AH
05/2
Windows
Unix
NLM
^ T X'
Workflow
Copyright VNR, 1994. Reprinted with permission
from Client/Server Survival Guide with OS/2
Copyright VNR, 1994. Reprinted with permission
from Client/Server Survival Guide with OS/2
Robert ©rfali
Pan Harkey
CSienf/Server Survival Guide
Robert ©rfali
Pan Harkey
Client/Server Survival Guide
A) Plug-and-Play
Copyright VNR, 1994. Reprinted with permission
from Client/Server Survival Guide with OS/2
P) Coexistence
Copyright VNR, 1994. Reprinted with permission
from Client/Server Survival Guide with OS/2
Robert Orfali
Pan Harkey Client/Server Survival Guide
Robert ©rfali
Pan Harkey _Client/Server Survival Guide
Application
Common
Objects
Facilities
C
Q O
Future:
* Transactions
* Security
* Concurrency
* Relationships
* Pata Interchange
Copyright VNR, 1994. Reprinted with permission
from Client/Server Survival Guide with OS/2
Copyright VNR, 1994. Reprinted with permission
from Client/Server Survival Guide with OS/2
Robert Orfali
Ian Harkey
Client/Server Survival Guide
Client/Server Survival Guide
A) rush Style
Aha: the Aha: the
house is house is
on fire on fire
Application .
specific
Process! Process) Process
Q Q. Q
Application
Object Request Broker
B) Pull Style
interface Interface
A Stub : B Stub
sic Object Adapter
(BOA) r
Robert Orfali
Pan Harkey
Copyright VNR, 1994. Reprinted with permission
from Client/Server Survival Guide with OS/2
Client/Server Survival Guide
Copyright VNR, 1994. Reprinted with permission
from Client/Server Survival Guide with OS/2
Client/Server Survival Guide
Lifecycle Object
Factory Finder
find_factories
(Oient Application)
Protocol l
PIP PIP PIP
Persistent
Objects (POs)
Persistent
Object
Manager (POM)
Generic Factory
create_object
PA O.PMO-93 PPO
[
Persistent
Pata
Services (PPSs)
Copyright VNR, 1994. Reprinted with permission
from Client/Server Survival Guide with OS/2
Copyright VNR, 1994. Reprinted with permission
from Client/Server Survival Guide with OS/2
Structured
Storage
Automaton
& Scripting
Copyright VNR, 1994. Reprinted with permission
from Client/Server Survival Guide with OS/2
Robert Orfali
Pan Harkey
Client/Server Survival Guide
/ CORBA?
in?
Copyright VNR, 1994. Reprinted with permission
from Client/Server Survival Guide with OS/2
m a
inn
Survival Guide
Copyright VNR, 1994. Reprinted with permission
from Client/Server Survival Guide with OS/2
Client/Server Survival Guide
Copyright VNR, 1994. Reprinted with permission
from Client/Server Survival Guide with OS/2
Client/Server Survival Guide
Robert Orfali
Dan Harkev
Client/Server Survival Guide
I ' ' ' V~j
I i—-“Q sss
~~ ' “ MM
UBkK^
Robert Orfali
Dan Harkey
Client/Server Survival Guide
l
Copyright VNR, 1994. Reprinted with permission
tijbsa
JSL .
9
from Client/Server Survival Guide with OS/2
(^1
b
l <
rfali
r « „ i /«x a B /e& e ■
Robert i
Copyright VNR, 1994. Reprinted with permission
from Client/Server Survival Guide with OS/2
Client/Server Survival Guide
Open DSM
riatform
HP OpenView
IBM LAN NetView
IBM NetView/6000 i
Tivoli
distributed System
Management (DSM)
SunNet Manager
Novell NMS
Cabletron
Manager of
Managers
Netview (IBM)
PolyCenter (DE C)
■ Accumaster (AT&T)
Vendor Anarchy
End-User Interface Management Applications Management database
Mamt. y
/ConfiguratlonN
x ^ Mgmt._ ^
'^Operations'
^ _Mgmt._ S'\
/^BusinessN
x^ Jvdgmt._
'^Problem^N
v Mgmt. v'
ChangeV
yv&J- I 1 :
rerfbrmanceN
s^Mgmt.^^
Basic Platform
Services
■S'+rW&M - , « ', *1
To Other __’*■ 1
Managers j
, Devices) /SNA)/
. CMIF NMVT SNMP ^ ORB E-Mail MOM | ^Middleware
(Mainframe) VgntV ■ -L ^J
^ ( Devices ) (Application). V®©®.8&y
Copyright VNR, 1994. Reprinted with permission
from Client/Server Survival Guide with OS/2
Copyright VNR, 1994. Reprinted with permission
from Client/Server Survival Guide with OS/2
Robert Orfali
Pan Harkey
Client/Server Survival Guide
Roots
fC-LANs
GUIs
Mail#;
4&l<
: §E
distributed Technology
Decision support Groupf&utel
Scope
.
client or server ciient/scrver i
Robert Orfali
Pan Starkey
Client/Server Survival Guide
Robert Orfali
Pan Starkey
Client/Server Survival Guide
*
Copyright VNR, 1994. Reprinted with permission
from Client/Server Survival Guide with OS/2
Robert Orfali
Pan Starkey
Client/Server Survival Guide
First Wave Second Wave Third Wave
Copyright VNR, 1994. Reprinted with permission
from Client/Server Survival Guide with OS/2
Where to Go for More Information:
/ Client/Server Survival Guide with OS/2
Van Nostrand Reinhold, 1994
ISBN: 0-442-01798-7
IBM Publication Number: SR28-5494
/ Essential Client/Server Survival Guide
Van Nostrand Reinhold, 1994
ISBN: 0-442-01941-6
IBM Publication Number: SR28-5572
/ Client/Server Programming with OS/2 2.1
Van Nostrand Reinhold, 1993
ISBN: 0-442-01833-9
IBM Publication Number: 0325-0650-02
Copyright VNR, 1994. Reprinted with permission
from Client/Server Survival Guide with OS/2
SNA Client/Server
in
Communications Environments
John Zeiger
IBM
Networking Software Division
RIP, NC
OVERVIEW
What is Ql®rat/S®r¥®p?
What sypp@rt SNA tav® for Cllent/Server?
Ex®mpl@s of C!@ffit/S@fw©r in SNA Environments
Hanaglnf Maintaining an SNA C3i@nt/S®rv®r environment
Its® following terms, denoted by m asterisk f) el their Ural @ccyrr®nc®,
sr® trad®marks of the IBM Corporate:
kpm, as/w, acs s ffst72, ibm, N®tvi@w, oss, m/m®, sm@ t mm
Til© tv'Swiiriny t©?BB!3, MciiStSw wj tww SStwrakS {**) wt thdar 1lf$t ©CCyrrljflC®,
ar® trademarks of ®th@? companies:
Apple, Appletalk, Brbsten Systems, ©c: Mail, DCL, InsessSon, IPX,
Lotos Mmm, NetWar®, Novell, Systems Strategies, 3Com
WHAT AND WHY
CHent/Server is...
- a dS@M program that r®^y®sts services, and
- a server program provide® them.
- Together they Implement a distributed application.
Businesses want the host v@ly® for th®ir ioformaion technology dollar.
Client/Server eompyting increase® value fey:
- Integrating Mated systems
- Combining desktop friendly fester®® with prodyetflon-capafeb bsck-end®
- Enabling scalable applications
- Lowering Incremental cost®
Traditional! SNA
CHwits
Traditional Sf&A l?$©tw@rks support Cilent/Server
a Host Is Server
■ Ca@t®wsy provides LAM/WMi protocol
conversion and concentration
"dumfe termlnar applications ar® also sypp®st®d
SNA is OPEN
- Many Products
- Many Venders
- Many CennectMtiss
TODAY’S SNA
= Adelle Corp.
» ALE Systems
• American Management Systems, Inc.
a American Software USA
□ Andersen Consulting
u Annatek Systems, Inc.
a Arkansas Systems, Inc.
a Automated Financial Systems, Inc.
> Business Partner Solutions
■ Candle Corporation
a CCS Commercial Credit Systems
» dtlsystems, Inc.
■ COL Consulting, Ltd.
■ Computer Associates International, Inc.
■ Computer Corporation of America
» Compuware Corporation
■ Core Technology Corporation
o Corrigan and Colville, Inc.
° David Goodenough & Associates, Ltd.
= Dun & Brads tree! Software Services, Inc.
□ EDS Corp.
o Enghouse Systems Ltd.
» Enterprise Data, Inc.
o Heuristics, Inc.
■ I & G Software Associates, Inc.
a Infinite Options, Inc.
b Internal Systems, Inc.
a International TeleManagement Corp. (ITM)
a Intersolv, Inc.
b ISI Systems, Inc.
b J.D. Edwards, Inc.
b Kentech Systems, Inc.
a Lakeview Technology, Inc.
b Lawson Associates Inc.
a Lotus Development Corporation
= Manager Software Products, Inc.
b Marcam Corp.
b Medical Development Systems, Inc.
b Metafile Information Systems, Inc.
b Micro Declsionware, Inc.
b Mltek Openconnect Systems
a Multi Soft, Inc.
a Oracle Corp.
a and many more
CM/2 DgSTRgBUTED FEATURE CLIENTS
C£a/2 ftertworfe Hods, Cette S®sve?
LAN FBaSafw
CM/a’s Distributed Feature (DF) supports the Cllent/Server mode!.
CM/2 DF workstations:
✓ Full SNA APTO support
✓ Reduced price
✓ Reduced DASD requirements
✓ Reduced admteilstiratlffin costs
- CM/2's SNA applications can communicate without change over a frame relay network.
- Route Expander/2 sister product provides Frame Relay Connection
- A SNA client/server model can be built on a frame relay network.
SNA NETWORKS and NON-SNA APPLICATIONS
ORDER ENTRY EXAMPLE
SNA NETWORK MANAGEMENT
- SNA provides the foundation upon which LAN and enterprise network mgmt solutions rely.
OLYMPIC GAMES
SUMMARY
SNA supports Client/Server Computing
• Distributed Servers and Clients
. Open Networking Standards supporting
Client/Server applications
. implemented by many vendors
CSS/2 is a comer stone for implementing Client/Server
applications
■ support for many LAN/WAN connectivities
• support for distributed applications
• support for distributed network management and
maintenence
• it also supports host terminal emulation
hi Networking Servics*s/DOS
"APPC for DOS and Windows"
-Announced: March 125,1992
s ^ v MS/DOS Features
What Does MS/DOS Offer ?
With NS/DOS, you can:
■ Incorporate existing DOS and Windows workstations
into SNA networks implementing APPC client/server
applications
- protect and manage migration of existing
hardware/software investment
- portability of applications and programming skills
via Common Programming Interface-
Communications (CPI-C)
■ address new business IS solutions afforded by
portable computers
"Full Middleware Interface between Distributed Application
and the Network"
Client PC
*cpfcj«lo: I
-=2^=dr
NS/DOS
Sampto Program&'Tiiotc
» APING
. CPICWIN
APIs
*> Mvancotl CPI-C
« Node Operator (or System Management.
LU8.2 SNA Protocol Stack
« Non-blocking
CoonectMtios to Subaru ,:r amt APPN Noiwotha
« LAN, Asyrx, SDLC-, Twinax
• Supports Inbound Connection Request
■ Supports Direct UQS.’Wlmiows tn
DOSWindcws
tmm
ms
^ What CPI-C Provides
MS/DOS Advanced CPB-G Support
■ Standardizes APPC interfaces
■ Adopted by X/OPEN
■ Simplifies programming of transaction programs
a Provides portability of programs and skills across
operating systems
m
■
HM
■ CPI-C 1.0 - Simple peer-to-peer communications
■ CPI-C 1.2 - Consolidated CPI-C 1.1 and X-OPEN
extensions
- Data Conversion: ASCII <--> EBCDIC
- Security Extensions
- Client/Server calls and functions
■ CPI-C 2.0 - Non-blocking calls
- Simulates full-duplex conversations
full-duplex API
half-duplex twin piped LU
New Publications
■ SC31-61 >30 01 CPI-C 2.0 Specification
■ SC26 4399-06 CPI-C Refcic n cct
SNA Protocol Stack Features
Variety of Communications
Robust LU6.2 Architecture Support
- Non-blocking LU
-Attaches Inbound Transaction Program Requests
with Filtering
- Windows Program Launcher Support
- Outbound Conversation Password Security
Wide Range of Supported Connectivity Options
-Token Ring (4Mbps and 16Mbps)
- Ethernet LAN
-IBM FDDI LAN
- PC Network LAN
- Lan over Coax to 3174
- Async to AS/400, OS/2, Advantis
- SDLC
Communicates with other APPC/CPI-C Systems
- IBM: CICS,MVS,NetView,OS/2,OS/400
AIX/6000,VM,VTAM
- Non-IBM: Apple,AT&T,DEC,HP,Novell,Sun,
SSI, Wang, etc.
AW
aw
Local Area Networks
' i:f SDLC/Async
■ Token-Ring, Ethernet, FDDI, PC Network
- Support via LAN Support Program (Part #93F2-456)
■ Windows Enhanced Mode now supported
« Coax (LAN over coax)
- PRPQ P85114
- 3174 Config Support C or Config Support B Release 3
with RPQ8Q0718 Q]J5
. SDLC
■ Asynchronous:
- No special adapters
-"SDLC" over async
- Catchers
► AS/400
► OS/2
► Advantis Network
■ Connect to AS/400 via:
- Workstation Controller
- 5394
-5494
AS/400
Client PC
Pipeline
File Xsfers
DB Update
inquiries
Credit Checks
Conversational
Server/M ainlrame
Application Portability
industry Leading Advanced GPi-G implementation
New API for Communications System Management
► Additional Functions
- Full Duplex Conversations
- Allows Applications to Send/Receive Simultaneously
- Supports Multimedia Applications
- Non-Blocking Verbs
► Asynchronous Control
- Data Conversion
- ASCII <-> EBCDIC
► IBM Person to Person for Windows
■ Node Operator API
- Control NS/DOS Connectivity and Configuration
from an Application
- Interfaces:
► Link Management
► Session Activation
- Partner LU Definitions
► Mode / Sidelnfo / TP Definitions
-Windows Management Application Included
Improves Integration of
Applications & NS/DOS
Greater Application Initiation Flexibility
Simpler Client/Server Development Environment
• Primary Link Station Support
- Allows an Adjacent Node to Activate NS/DOS Link
- Permits DOS/Windows-to-DOS/Windows
Communications Without A Network Node
• ■
■
■ Basic License - Program Package
- $195 (US)
- Program Diskettes
- Softcopy Documentation Diskette
- Hardcopy Documentation
- LAN Support Program Version 1.33
- LAN over coax PRPQ
■ Additional License - Right to Make 1 Copy
-$145 (US)
■ Program Numbers:
- 5871 - AAA P/N 20G0437 (NA.LA.APG)
- 5621 - 344 P/N 20G0437 (EMEA)
■ Software
- DOS Version 3.3 or later (or DOS J5V)
- Microsoft Windows 3.0 or later
■ Hardware
-Any IBM PC or 100% IBM Compatible PC
- A network adapter
"Full Middleware Interface between Distributed Application
and the Network"
Ssmpto Program&Tools
e Fiht Transfer
« Emulator
APfs
«Industry Landing Now
LU&.2 SNA Protocol Stack
■ Motnory Cancsrvetlon i da Window* PU -s
■and PCS Extender
« Microsoft CHICAGO
n SNA Lovel Com;inttsion
a Improved Sorvicoatrilify
Additional Communications Flexibility
m AriyNet (tm) E.nM&nutn!
« Support for non-IBM DLC software
- X.S5, ISDN, Yd ret os a
a Dots Link lntorfoo#£ to ftDIS Adaptors
« Improved Romoto Access
Client PC
NS/DOS Benefits
APPC Market Enablement
IBM APPC Solution tor DOS and Windows
■ Client/Server Applications with Servers/
Mainframes
■ Smaller / Portable PC’s
* OS/2 Migration Enabler
APPC Market Enablement
Dept AB7/ Bldg 502
P.O. Box 12195
Research Triangle Park, NC 27709 USA
Internet:
CompuSeive:
VM:
Phone:
Fax:
appcmrkt@vnet.ibm.com
76711,370
APPCMRKT at RALVM6
1-919-254-4957
1-919-254-6050
Internet Anonymous FTP Site: networking.raleigh.ibm.com
CompuServe Forum: GO APPC
CICS 0S2 Client Server
Computing
A WORLD OF CHOICE
Alex Aversano
Software Marketing Specialist
IBM US M&S
Copyright 1994 IBM Corporation
CICCS 010
'^7 77?e CICS Family
€) Approx. 2000 vendors otter 5000 + CICS Packages
Estimated
300,000
Programmers
«> Over
50,000
Server
Licences
Worldwide
DOS • Wm
Application Serwr
• 90% of
Fortune
500 use
CICS
« Over 1 Billion Lines of Code in Applications
Copyright 1994 IBM Corporation
CICCS 020
Trademarks
The following terms used in this presentation are trademarks or (R) registered
trademarks of IBM Corporation in the United States and/or in other countries:
IBM(R)
CICS/6000
PS/2(R)
CICS
MVS
ES/9000
CICS/ESA
VSE
RISC
CICS/MVS
AIX(R)
System/6000
CiCS/VSE
OS2/(R)
AS/400
CICS/OS2
0S/400(R)
DB2
CICS/400
LANDP
SQLVDS
The following terms are trademarks of other companies or institutions:
UNIX
UNIX System Laboratories, Inc (R)
OSF
Open Software Foundation, Inc
DCE
Open Software Foundation, Inc
Oracle
Oracle Corporation
Informix
Informix Software Inc
Ingres
ASK Corporation
Sybase
Skybase Inc
Copyright 1994 IBM Corporation CICCS 030
Agenda
• What is Client/Server Transaction Processing?
• How CICS enables Client/Server
• CICS directions for Client/Server Transaction
Processing
Copyright 1994 IBM Corporation
CICCS 040
' 7 * Client/Server Transaction Processing
. . . - . . . .
• OLTP moving to client/server networks
9 Deploy applications throughout the network
Client/Server Transaction Processing
• Clients have low utilization
• Servers have high utilization
• Network topology is determined by load
• Applications are distributed, relocated and managed
"The Network is the system"
Copy fight 1994 IBM Corporation
CICCS 070
Data Oriented vs Application Oriented Servers
Remote data
Access
Database
Server
Application
Server
Closed
Server
Business
Logic
Data Access
Stored
Procedure
RDBMS using
Stored
Procedures
Business
Logic
Presentation
Business
Logic
harder to
Control
Data Access
mm
Business
Logic
« Many SQL
• Less SQL
exchanges |
Exchanges |
per 1
per Business F
business I
Transaction I
,55™ transaction ebssssL
Business
Logic on
Server
Easier
to Control
One
Exchange
per Business
T ransaction
Presentation
Presentation
n
Copyright 1994 IBM Corporation
CICCS 080
Application ServepBenefits
1. GATEWAY between old and new applications
2. INTEGRITY across heterogenous resources
3. PLATFORM for networked applications
4. INDEPENDENCE from infrastructure
5. PERFORMANCE optimization
Copyright 1994 IBM Corporation CICCS 100
Client/Server Application Models
« Where can you split a client/server application?
Customer application
— ’
: Pres: : :
" Pres
Business ;
Data
: Mgmi:
Logic
Logic
Logic
. . Mgmt
t
Possible machine
boundary
Remote
Application
Appl-to-AppI .Remote
Communication Data
► Conversation
[xTHegSn 7 ]
♦ Call
► Message
Copyright 1994 IBM Corporation
CICCS 110
Client Server Application Structure
Support for Client/Server Models
CSCS has a rich set of functions for client/server
interoperation TODAY:
• Transaction routing (Remote application)
m Function Shipping (Remote data)
- File Control (Record oriented files)
- Temporary Storage (Temporary files)
- Data Tables (Main storage files)
- Transient Data (Queues)
• Distributed Transaction Processing (Conversation)
• Distributed Program Link (Call)
• Asynchronous Transaction Processing (Message)
Collectively known as CICS InterSystem
Communication (ISC)
Copyright 1994 IBM Corporation
CICCS 120
Distributed Program Link
CICS1
C1CS2
Location of
remote program
transparent to
programmer
Easy access to
remote data J
functions (e.g.
databases)
Optional data
conversion via
template
Copyright 1994 IBM Corporation
CICCS 130
Transaction Routing
Transparent to
users and
programmer
Run transaction
where programs
and data reside
Reduce network
traffic
Copyright 1994 IBM Corporation
CICCS 140
Copyright 1994 IBM Corporation
Open Client/Server with CtCS
DOS Windows
MAC
Transport Protocols
CICS/HOST
CICS/HOST
CICS/HOST
CICS/HOST
Copyright 1994 IBM Corporation
CiCS Client Architecture
Customer Applications
Terminal
_ emulator
ECI EPI
Interprocess Communications
Interprocess Communications
Scheduler
CICS Transformers
Mapping to LAN Transport
DC E/RPC
NetBios
Copyright 1994 IBM Corporation
External Call Interface (ECI)
CLIENT machine
SERVER machine
Remote SERVER
A method for a Client Application to call a new CICS Server application
Enables GUI applications to exploit CICS network
Appears as Distributed Program Link at server
Copyright 1994 IBM Corporation
CICCS 170
External Presentation interface (EPi)
CLIENT machine SERVER machine Remote SERVER
A method for a PC program to pretend to be a 3270 and use a 3270
oriented CICS apfplication
Allows a GUI front end to be added to an EXISTING CICS application
Appears as Transaction Routing at the Server
Copyright 1994 IBM Corporation CICCS 180
CICS Client Directions
• Platform choice
• More protocols (TCP/IP, APPL)
• Enhanced API's (ECI, EPI)
• Application development tools
• Object-Oriented programming (C++, Smalltalk)
« Systems management
Copyright 1994 IBM Corporation
CICCS 200
Clients to CICS OS/2 Server via NetBios Emulation on IPX
CICS OS/2 Data on NetWare ^Server
Clients to CICS/ESA via NetWare ^Server with Netware for SAA ' Bl
Application Development Tools
Application Development Tools - CICS OS/2 Examples
User Interface Client Application
Server Application
Copyright 1994 IBM Corporation
CICCS 230
Copyright 1994 IBM Corporation
CICCS 240
CICS Server Directions
4ft
<1
<(»
<1
(I
(ft
Platform choice
Flexible performance
Scaleable performance (SMP)
Enhanced usability/robustness
Leading edge function
Application development tools
Object-oriented programming
Systems management
Copyright 1994 IBM Corporation
CICCS 250
CICS Platform Support Directions ?
Mid 9Q’s OLTP Operating Environment
Proprietary
UNIX
OS/2
W/NT
N'ware
WPOS
Other
Unisys
DEC
HP
Tandem
etc
!
IBM
380
400
RISC
IBM
HP
SUN
DEC
S-G
Pyramid
Tandem
Intel
NCR
Unisys
Sequent
SCO
Intel
Intel
S-G
Alpha
Power
PC
Intel
HP
Power
PC
.
i
:j
Goals
• Port CICS to major industry
Platforms:
« Meet Existing Customer
Requirements
- grow/protect investment
- client/server
« Open--^ Platform
Independence
Status
Sept 1992
March 1993
June 1993
Dec 1993
Feb 1994
Hewlett-Packard® (OEM)
Apple®Client [!
Wi.<dow^4l (Intel) ||
NetWare .Client
NetWare Interoperability j
DEC OSF/1 Axp® jj
I Going Places with CICS!
Copyright 1994 IBM Corporation
CICCS 260
Copy tight 1994 IBM Corporation
CICCS
994 Olympic Winter Games, Lillehammer
2,000 athletes from 75 countries
12 sports over 11 sites
3 billion TV viewers world-wide
m
50,000 accredited personnel 2,000 volunteers & employees.
100,000 spectators per day
• Absolute deadline^ '
w .
« Only one chance ^
• Extreme media focus
8,000 media r epresentatives
Copyright 1994 IBM Corporation
CICCS
LOOC
Administration
1994 Olympic Winter Games, Lillehamm er
Results &.R^bSngs: P.r6tSes5l'!^^ Pistribution
♦ Hjg|p^ OLTP
P^m^ntator Information System
J||P|tant results and competitors data
RS/6000S £-* Ji^ulti-media interface
* Jgfo '94
" “Public access to Olympic Information
Large database
I Games Management
%• Accreditation, ticketing, accommodation . .
|. Host OLTP
DAK '94
• CAD/CAM design
LOOC Administration
* Office automation
3000 PS/2s
Copyright 1994 IBM Corpoiation
CICCS
1994 Winter Olympic Games
CICS : as a ..HighPertormapce Cgienf Server OLTP
CICS at Ullehammer
"CICS reliability makes it the obvious choice"
... "there are no second chances witliJIhp&ymps^Ga^k - so
we have to have a system with a tradk^^ordrofdbntroffing
information moving between thpiMnds of workstations, and
able to stay up 24 hours a dayWi yfe need it."
C | Reider Rossum, IBM Olympic Project
S' Director
"CICS provide ]
s the robust, industry standard middleware we need ; not only is
it designed to hapdib a htghfrolume of transactions, but it also
offers the addeSgecurity^ofJfault tolerance and recoverability.”
'if :?s> v Frode Finne, Project Leader
-feA " Ullehammer Olympic Organizing Committee
Copyright 1994 IBM Corporation
x C/CS Vision of Client/Server_ _
Industrial strength CICS servers on:
• IBM hardware and operating systems
• Key non-IBM hardware/operating systems
Each supporting:
« The compatible CICS family API
• Client/Server interoperation with other CICS servers
• Thin CICS clients
- DOS, Windows, OS/2, Apple Mac, other
• Non-programmable terminals and terminal emulators
® Enhanced systems management
• Productive application development
Copyright 1994 IBM Corporation
CICCS 280
What All Those Letters Stand For
Introducffimi®
Dawn Comfort
APPC Market Enablement
Rosoardi Triangle Park, NG
■ APPC: Advanced Program-to-Program
Communication
m APPN: Advanced Peer-to-Peer
i^eiWuiKiny
mm
^ APPC and APPN
mi®
VWI?
CSSs.
H8. Tfota It Jm.
Fine, «n$
<S€>©d bye.
APPC
Why Us® APPC?
■ For its connectivity
- IBM platforms
- Non-IBM platforms
« For its portability
» For application independence from the type of link
a For its built-in features for client/server applications
Th® Phone Company
APPN
For its performance!
si AS/400
- CICS
- DOS
* DPPX/370
* IMS
- MVS
* OS/2
■ RISC System/6000
■ Series/1
■ System/36
« System/38
« System/88
. TPF
« VM
■ VI AM
» 4680/4690 Store
System
Vendors Producing
APPC Applications
a AdsJIs Corp
o ALE Systems
■ American Management Systems, Inc,
■ American Software USA
<• Andtsraan ConsuMng
a Annate Systems, Inc,
a Arkansas Systems, Inc.
a Automated Financial Systems, Inc.
a Business Partner Solutions
■ Candle Corporation
CCS Commercial Credit Systems
a Cliisystems, Inc.
a COL Consul tin g, Ltd.
a Computer Associates International, Inc.
a Computer Corporation of America
a Compuware Corporation
a Cor® Technology Corporation
a Corrigan and Colville, Inc.
= David Qoodenough & Associates, Ltd.
* Dun & Bnadstreet Software Services, Inc.
a EDS Cotp.
> Engftouse Systems Ltd.
a Eni or prise Data, Inc.
a Heuristics, Inc.
a I & G Software Associates, Inc.
a Infinite Options, Inc.
s Internal Systems, Inc.
a InlemaHonel TeleManagemenl Corp (ITM)
■ Intwsotv, Inc.
•> (SI Systems, Inc.
» J.D. Edwards, Inc.
a Kantach Systems, Inc.
a Lakevlew Technology, Inc.
a Lawson Associates Inc.
a Lotus Development Corporation
□ Manager Software Products, Inc.
□ Mercsm Corp.
a Medical Development Systems, Inc.
® Mefallle Information Systems, Inc.
a Micro Bad si on were, Inc.
a Mitak Open connect Systems
a Multi Soil, Inc.
» Orade Corp
a and many more
Non-IBM APPC Platforms
Advanced Computer Comm.
a NJE.T.
AsndaW
o NetSoft
Apple Computer, Inc.
o Network Systems Corp
AT&T/NCR
« Novell, Inc.
ASacTwisie
= Open Connect Systems
Brtaton Systems, toe.
» Orton Group
BuB Information Systems
3 Protean
C&btetron Systems
o R<Rh-hii Software, Corp
Cisco Systems
» Jtetfct
CLEO Communications
> Stemens-Ntedorf
Compeofl Services
s Streauo Computer Inc.
Compulone
■ Sun Microsystems, toe.
CrossComm
□ System Strategies, Inc.
DC A
a Tandem Computers, Inc.
Date Connection Ltd.
b Tang ram Systems Corp
Date General Corp
a Testes Instruments
Digttei Equipment Corp
s Itogansnann-Bass
Dig&al Communteatton Associates, Inc.
-UWhom
Eicon Technology, Inc.
3 Ltolsys
Harris
* Wall Date
Hewtett-Pacfcwd Co.
a Wang Laboratories, Inc.
toasarion
. WeWleet
Microsoft
NCR Corp
W
Portability
■ Common Programming interface for Communications
(CPI-C)
- Programming interlace for APPC
- Consistency across platforms and languages
- Portability of applications
- Portability of skills
- Communication with native APPC
programs
Independence from type @1 link
Functions important tor client/server development
- Class of Service (COS)
- Security
- Synchronization
“ Error recovery
Benefits
- Reduced development time
- Lower development costs
What Does APPN Do for Me?
APPN Network Participants
■ Reduces costs and increases productivity
- Finds resources automatically
- 'Plug and work" network
■ Works for both IBM and non-IBM platforms
- Open architecture
- Widely available
NN
a Network Node(NN): routing nod©
■ End Nod© (EN): workstation or data host
a Low Entry Networking Nod© (LEN): workstations
mm
mm
For peer communications, each machine must
have definitions for every ether machine.
APPC Configuration With APPN
Each machine only knows about Its network node
Network Growth Without APPN
PC4 n to toow about ®¥®ry@ra® and avary©?!®
to know PC4 _
it
m
APPN Directory
■ Reduces network definitions
a Dynamically locates network resources
a Central Directory Server (CDS)
Network Growth With APPN
PC4 naada to kn®w about Bt» network nod®. E^arytitolng «
foandlad automatSeaBBy,.
APPN Topology Dynamics
b Recognize and record link characteristics
■ EN and LEN nodes do not maintain network topology
■ Network topology flows optimized
Open Architectures
^ APPN is Available
■ Available
■ APPN Implemented Workshop (AIW)
■ EN and NN architecture specifications available
* EN and NN technology agreement
■ NN source code licensing
- System/36
* AIX SNA Server/6000
a AS/400
* OS/2
* 3174
- DPPX/370
a NetView
a VTAM
a 6611 Network Processor
a 8250
- Brixton Systems, Inc.
- Systems Strategies, Inc.
a Data Connection Ltd.
a Insession
a 3Com
a Wall Data
APPff
»§'
a * Now AFPC/APFN @r pr®$uef®
Bast pi
APPM - More Products Coming Soon
<r APPC and APPN Benefits
» Announced or Expected
-8260
a Ascom Timeplex
a Cisco Systems
a CrossComm
A N.E.T.
a Proteon
- Advanced Computer
Communications
- Apple Computer Inc.
- Bytex
- Cabletron Systems
- Chipcom
- Eicon Technology, Inc.
- Hewlett-Packard Co.
- Hitachi Data Systems
- Memorex Telex
- Network Systems Corp.
- Northern Telecom
- Novell, Snc.
- Retix
- Siemens-Nixdorf
- Stratus Computer, Inc.
- Sync Research
- Ungermann-Bass
- Unisys
- Weltfleet
■ Wide range of vendors and platforms - open and available
■ Provides an ideal base for new client/server applications
® Robust networking capabilities
★ “ h«v® Ho*n8®d APPN NN ood® Irom IBM
Getting Started with APPC/APPN
■ Recommended IBM publications
- APPC and CPI-C Product Implementations (GG24-3520)
- APPN Architecture and Product Implementation
(GG24-3669)
- CPI-C Reference ($026-4399)
_ Best of APPC, APPN, & CPI-C CD/ROM(SK2T-2013)
m APPC Developers Assistance Program (DAP)
m APPC/APPN Technical Conference '94
- Amsterdam, September 26-30
* APPC Connection newsletter
APPC and APPN Online information
■ BBS Service
- CompuServe
- OS2BBS on IBMLINK
- IBM Internal Forums
b APPC/APPN Information
-GO APPC
- APPC CFORUM
- APPC Forum
- Anonymous ftp to
networking, raleigh.ibm. com
(192.35.236.4) in
pub/appc_appn
More questions?
APPC Market Enablement
Dept. E42/Bldg 502
P.O.Box 12195
Research Triangle Park, NC 27709
VM: APPCMRKT at RALVM6
Internet: appcmrkt@vnet.ibm.com
CompuServe: 76711,370 !GO APPC
Phone: 1-919-254-4957
Fax: 1-919-254-6050
4 Overview
Xv::v:-::v::x:>^
•x^wXv^wX'X'WXvwr-K'
WtLirsNewinAPPC
m mv+r%Aia '
and APPN
Ifgy
APPC Market Enablement
RTF, North Carolina USA
APPC or APPM ???
H®ik>
U<m w®
©fe.
HL Thl® 9® Jo®.
Fin®, and ymmofiH
©ood fey®.
®<m4 fey®.
« What’s new with
- APPC: Advanced Program-to-Program Communication
~ CPI-C: Common Programming Interface for
Communications
- APPN: Advanced Peer-to-Peer Networking
« What’s new with
= Communications Manager/2
- Networking Services/DOS
“ SNA Server for RS/6000
■ What’s coming with APPN
W 0*q«n*J»n 10M &%mM
my*"*:*
^ IBM APPC Platforms
« AS/400
a Series/1
» CICS
« System/36
■ DOS
■ System/38
- DPPX/370
a System/88
* IMS
a TPF
- MVS
a VM
« NetView
a VTAM
- OS/2
a 4680/4690 Store System
■ RISC System/6000
{CJ EMOorpsrHSwiISM
P^tsy 0*rp«raS€fl1ES4
a Advanced Computer Comm.
□ Appfe* Computer, Inc.
a ATftT/MCR
a GrteSwi Systems, Inc.
a Bu8 Information Systems
a Cabteiron Systems
a Cisco Systems
a CLEO Communtemtons
a Compsefl Services
a Ccmputoroe
a CrossComm
a DCA
a Data Connection Ltd.
□ Data General Corp.
a Dig Sal Equipment Corp.
a Dig Bat Communication Associates, Inc.
e Eicon Technology, hie.
o Harris
a Hswtett-Peckard Co.
a Ensession
a Micro soft
a NCR Corp.
a N.E.T.
a NetSoft
a Network Systems Corp.
* Mov»«, Inc.
o OpenCcmed Systems
a Orton Group
re, Corp.
a Retix
a Stemsne-ftodor?
a Stratus Computer Inc.
a Sun Micro By stems, Inc.
a System Strategies, Inc.
o Tandem Computers, Inc.
a Tang ram Systems Corp.
a Teaas Instruments
a DnganmmvBeca
a Unlhom
a Unisys
a W»fl Date
B W»ng Laboratories, Inc.
AK
Platforms Offering the CPI-C API
■ gElb£JMaLAEE£
- Data General Corp. (Avilon)
- DCA (DOS & OS/2)
- IBM AIX SNA Services
- IBM CICS
- IBM IMS
- IBM MVS
- IBM NS/DOS
- IBM OS/2
- IBM OS/400
- IBM VM PWSCS
- IBM VM with CMS
■=- IBM 4680 Store System
- Insession (Tandem)
- Rabbit Software (DOS)
- Systems Strategies, Inc.
(Unix)
. CP8-C over other transports
- IBM VM PWSCS (NetBIOS,
IPX, TCP/IP)
- Tangram Systems Corp.
(proprietary)
» Transarc (proprietary)
■ AnnPMnpyi Sup p m
- Apple Computer, Inc.
(Macintosh)
- Brixton Systems Inc. (Unix)
- Bull (Unix)
- Compsoft (GO, pen-based)
- Hewlett-Packard Co. (Unix)
- Microsoft (Windows)
- Novell, Inc. (NetWare)
- NSA (DOS)
mm
Portability of code and skills
- Platforms
- Programming languages
■ CPI-C programs can talk to "APPC" partners
4«■
CPI-C Level 1.2
* CPI-C is part of the X/Open standards
- X/Open CAE Specification, CPI-C
- Document Number C210 ISBN: 1-872630-35-9
® Level 1.2 integrates X/Open extensions:
- Non-blocking calls
- Accept multiple incoming conversations
- Security calls
- Data conversion (ASCII to EBCDIC)
- Greater than 32K Send/Receive
GPI-C Level 2
CP1-C !mplementer's Workshop
a Enhanced server model support
- Full-duplex conversations
- Expedited data
- Nonblocking enhancements
* Distnbuted services exploitation for DGE
- Directory services
- Security services
* Built-in multiprotocol support
- SNA/APPC
-OSI
^ APPN is Available
* Available
- System/36
- ADC SNA Server/6000
- AS/400
-OS/2
-3174
- DPPX/370
- NetView
- VTAM
- 6611 Network Processor
-5494
-8250
- 3Com
- Brixton Systems, fnc.
- Data Connection Ltd.
- Snsesslon
- Systems Strategies, Inc.
- Wall Data
WinSNA
m Standard for communicating with Windows
applications
» Includes four SNA APss
m OC/O CAn/iAA<j
IIUIII L-AlCI 1UOI VIL/CO
- LUA
- EHLLAP!
- APPC
-CPI-C
■ Includes Windows-specific additions
APPC AMI
^ APPN is Available
a Announced or Expected
-8260
- Hitachi Data Systems
* Ascom Timeplex
- Memorex Telex
* Cisco Systems
- Network Systems Corp.
a CrossComm
- Northern Telecom
★ N.E.T.
- Novell, Inc.
* Protean
- Retix
- Advanced Computer
- Slemens-Nixdorf
Communications
- Stratus Computer, Inc.
- Apple Computer Inc.
- Sync Research
- Bytex
- Ungermann-Bass
- Cabletron Systems
- Unisys
- Chipcom
- Wellfieet
- Eicon Technology, Inc.
- Hewlett-Packard Co.
★ “ have Hoanwd APPN NH cod# from IBM
mm
DLUR/S Overview
* Complete solution for providing 3270 datastream over
an APPN network
- LU types 0,1,2, and 3
- All 3270 functions
- Network managment
* Flexible connection to the network
- Boundary Function now resides in DLUR node
* LU-LU sessions flow directly to the application host
CorpensaonlBM
Extended Boundary Function: DLUR/S
tpj B&3 C®rp«r«0on19W
Extended Edition(EE) for OS/2 1.1-1.3
« + Networking Services/2 (NS/2)
■ Extended Services 1.0 on OS/2 1.3. 2.0
* Communications Manager/2(CM/2) 1.0 on OS/2
1.3(+CSD5050), 2.0 or higher
■ CM/2 1.11 on OS/2 2.0 and higher
W
^ Communications fySanag@r/2 1=1
« Common 3270/5250 emulators
- Dynamic remap of keyboards and color
- Automatic font selection
« Data compression
® Enhanced gateway capacity and support
■ Installation/configuration enhancements
- Remote installation and configuration
- Automatic hardware discovery
« Support for PCMCIA 3270 adapters
» Separate from Database
® CPI-C extensions
a Remote installation and configuration
= ISDN support
■ First Failure Support Technology
■ PM configuration and tools
■ Multiple PU 2.0 attachments
HSfC
mm
Communications Manager/2 1.11
« SNA Phone Connect
- SNA over Async
► Non-switched autodial
- Switched autodial
- Autodial Wide Area Connector (WAC) adapter
- Autodial Multi-Protocol Adapter (MPA)
■ APPC Application Suite
■ Dependent LU Requester
II [l]
Manager/2 APPC
Version 1.0:
- APPC API
-CPI-C API
* CPI-C 1.1+ capability
«> Multiple TPs/process
Multiple conversations
Version 1.1:
- APPC API
- Full duplex conversations
■> Non-blocking verbs
► Expedited data
Networking Sen/sces/DOS
DOS and Windows
Provides the CPI-C interface
- Family-API programs can run in DOS or OS/2
Supports Low-Entry Networking (LEN)
Communicates through APPN network nodes & SNA
subareas
Communications Manager/2 Future
■ Session encryption for APPC
» APPC syncpoint enablement
■ Dynamic definition of dependent LUs
« Security improvements
* APPN enhancements
mm
What Does NS/DOS Offer ?
Full Middleware Interface between Distributed Application
and the Network
Ctteni PC
Sample Frogram&Toofs
» APING
« CPICMN
APIs
» Advanced CPI-C
« Nods Operator for System Management
APPC SNA Protocol Slack
» Non-blocking
Connectivity to Subarea and APPN Networks
« LAN Async, SDLC, Tvrfnax
» Supports Dlr&cri DOS/Wlndowx to
DOS/Window s
Additional CPI-C functions
- Full duplex conversations (simulated)
- Non-blocking verbs
- Data conversion
Nods operator A%P!
- Control NS/DOS connectivity and configuration from an
application
Primary link station support permits
DOS/Windows-to-DOS/Windows communications
without a network node
AIX and UNIX Platforms
- APPC and CPI-C
«=» SNA Services/6000 1.2
- Other OEM products for UNIX
■ APPN support
- In renamed SNA Server/6000 2.1
- In new SNA Gateway/6000
- Other OEM products for UNIX
Full Middleware Interface between Distributed Application
and the Metwork
Sample Progmm&N'ools
m File transfer
' a Emulator
. APfs
* Industry leading new
APPC SNA Protocol Stack
« Mem or v conservation via Windows DLLs
and DOS sxtftnder
* Microsoft CHICAGO
* SNA level compression
Additional Communications Flexibility
o AnyNet Urn) ana Moment
• X2S, ISDN, Witness
= Data link Interfaces to NEKS adaptors
^ APPC/APPN Enhancements for AIX
- APPC API
- Allocate listen with wildcard
- TP can run without configuration
- Deactivate sessions
- CPI-C API
-CPI-C 1.0+ capability
- Multiple TPs/process
- Multiple conversations
- Security
s APPN network node and end node support
Fewer expensive links to
remote hosts and better
resource utilization
Multiple PUs for SDLC and
FDDI
Quick configuration options
Downstream dependent LU
support
Performance enhancements
^ SNA S@rv@r/6000 Future
* Integration of AIX V4R1 Base Operating System
■ Channel attachment to the host
■ Implementation of key DCE functions
- Directory
- Security
m€
■ FDDI adapter support
® Xsna
■ APPN enhancements
- Central directory client
■ Any Net feature
- Sockets over SNA
- APPC over TCP/IP
APPtf
What’s Coming with APPN
■ Increased vendor support
* New product announcements
« High Performance Routing (HPR)
» Migration to ATM
>/! Getting Started with APPG/APPN
■ Recommended IBM books
- APPC and CPI-C Product Implementations (GG24-3520)
- APPN Architecture and Product Implementation
(GG24-3669)
- CPI-C Reference (SC26-4399)
- Best of APPC. APPN.. & CPl-C(SK2T-2013)
— CM/2 Version 1 G New Features (GG24-3Q53)
“ CM/2 Version 1.1 Enhancements (GG24-4142)
m APPC Developer's Assistance Program (DAP)
a APPC/APPN Technical Conference
- Amsterdam, September 26-30
^ APPC Market Enablement
APPC Market Enablement
Dept E42/ Bldg 502
P.O. Box 12195
Research Triangle Park., NC 27709
VM:
Internet:
CompuServe:
Phone:
Fax:
APPCMRK i at RALVM6
appcmrkt(S>vnet. ibm.com
76711,370 !GO APPC
919-254-4957
919-254-6050
APPC Connection Newsletter
APPN and TCP/IP:
A Comparison of Protocols
APPC Market Enablement
IBM Networking Systems
Ftesearch Triangle Park, NC
appcmrkt@vnet.ibm.com
APPCMRKT at RALVM6
919 - 254-4957
Agenda
■> Networking Blueprint
»< Platforms and applications
■ Routing
•* Other features
■ Summary
(O IBM Corporation 1994
Comparing The Protocols
<q IBM Corporator! 1W4
Availability of Platforms
APPC/APPN
- APPC is available for almost all systems
- APPN
► Is available for IBM, 3-Com, DCL, and Wall Data systems
> Will be available this year for more systems, including
Wellfleet, Proteon, Cisco, and HP
TCP/IP
- Available for almost all systems
Origins
- Running in business networks
- Attaching systems to hosts
- Moving to workstation/LAN networks
» Focusing on robust, industrial strength applications
- Minimize line costs
- Running in government, education & research
- Providing workstation connectivity
- Moving to business networks
- Focusing on multivendor connectivity
- Minimize host usage
(q IBM Corporator! 1B&4
Applications
APPC/APPN
- Large numbers of business applications
- "Applets" are just becoming available
TCP/IP
- Mostly research and university applications
- "Applets" are widely available
- More business applications being written
(q IBM Corporate! 1W4
Network Components
Addressing
m - End Mode A PPH Metwork
MM - Metwork Node
'W'
APPC/APPN
- 8 character network name, a and an 8 character LU
name
- e.g. "USIBMNR.SJOYCE"
- Network id registry is available
H - Host node TCP/IP Network
R - Router
{C) IBM Corporation 1&S4
TCP/IP
- Hierarchical, name@name3.name2.name1
- e.g. sjoyce@vnet.ibm.com
- Map to 32-bit IP addresses
- Mapping is done in domain name server
<C) IBM Corporator 1BS4
Configuration
Routing
APPC/APPN
- Required Items
> Control point name (network id and LU)
- Address of network node
- Connection network id (for LANs)
- Much easier than subarea SNA
- Don’t have to change addresses if you move
TCP/IP
- Required Items
► Host name
- Domain name server
* Default router
- Have to change addresses if you move
APPC/APPN
- Connection oriented
- Class-of-service routing: picked based on cost, speed,
delay, security, ...
TCP/IP
- IP is connectionless, TCP provides the connection
- All data is treated the same
- Routes are usually picked to minimize "hops"
<C) IBM Corporator! 1994
(C) IBM Corporator! 1&S4
Congestion Control
APPC/APPN
- Proactive, slows down before trouble
- Hop-by-hop, adaptive window size, potentially very
large buffers
- Prevents overflow of intermediate systems
- Requires additional processing at each hop
TCF/SP
- Reactive, throws away packets when the network gets
congested
- End-to-end, sliding window, 28Kb in many products
- Can overflow intermediate systems
- IP pacing responses flow as normal data
(C) IBM Corporation 1 0*4
Performance and Efficiency
APPC/APPN
- Requires session setup before data can flow
- Can utilize up to 98% of link capacity
- Excels at large data transfer
TCP/IP
- Includes address and makes routing decisions for each
packet
- Can utilize 40-80% of link capacity with Slow Start
- Reduces memory requirements
(C) IBM Corpcnttoi 1OT4
Mbits/second
Data Priority
APPC/APPN
- High, medium, low, and network
- Determined by the APPC Mode used
- Prevents batch traffic from affecting interactive
TCP/iP
- Little is defined
- Not implemented consistently
<C) IBM Corponricm 1 *04
Vedacom's OS/2 Performance
Results
100Kb file transfer with confirmation
te-T-—-
o-H- 1 - 1 - 1 - r 1
"T1" Routed "T1" Bridged 2 Ring Routed 2 Ring Bridged One Ring
<C) IBM CajporaJort 1804
Recovery From Errors
Other Features
APPC/APPN
- Drops sessions when links or intermediate systems go
down
- If the application tries to restart the session, APPN will
pick an alternate route
- Non-disruptive rerouting is added in High Performance
Routing (HPR)
TCP/IP
- TCP retransmits packets that aren't acknowledged
- Routing tables are updated when failures occur
- Application doesn't see recoverable failures
APPC/APPN
- Most cost-effective path to client/server for SNA
customers
- Syncpoint services
- Security
TCP/IP
- Internet access
- Included with many UNIX systems
- Source code availability
<C) IBM Cwporattan 1894
(C) IBM Ckjrporatoi 1884
Summary
APPC/APPN:
- Rich legacy of SNA applications
- Easy to configure
- Class of service routing and prioritization
- Congestion avoidance; efficient use of network
resources
TCP/IP:
- Rich legacy of university applications
- Included in most UNIX systems
- Internet access
- Congestion detection; automatic rerouting around
failures
(C) <<m CoTporaljai 1694
CS08
Programming GP$«C
Applications with
Communications
Manager/2
APPC Market Enablement
Research Triangle Park, NC
appcmrkt@vnet.ibm.com
Phone: (919) 254-4957
Agenda
- What isCPI-C?
■ Environment Set up
-- PDl P ^ol!c
« U| IUWW I l“W OCAIlO LU
- Start Conversations
- Stop Conversations
- Send Data
- Receive Data
- Confirmation Processing
App:£;
Ap
; :r Common Programming Interface for
Communications (CPI-C)
a Standard set of CPI-C calls for every platform
■ Same API for different languages
-C, COBOL, REXX, ...
■ CPI-C CODE AND SKILLS ARE PORTABLE!
® Partner program can speak APPC or CPI-C
■ Error and conversation status information are reported
via parameters on each CPI-C call
CPI-C CaSSs
■ Format for all CPI-C calls
CMxxxx(parm1 ,parm2,..rc)
■ In C
cmxxxx(parm1 ,parm2,..rc)
» In COBOL
CALL "CMXXXX" USING PARMI, PARM2,.. RC
» CPI-C programming reference: SAA Common
Programming Interface Communications
Reference (SC26-4399)
Environment Set-up
■ Need the CPI-C psuedonym files for C or COBOL
* Need the CPI-C library for C or COBOL
■ Need these for compiling and linking your programs
CMCOBOL.CBL
- In \CMLIB\CM_CBL directory
CPICOBOL.LIB
- In \CMLIB\CM_LIB directory
- Include on LINK
CPS-C Psuedonym Flies for C
■ CMC.H
- Sn \CMLIB\CM_H directory
- Values for all calls and return codes
■ CPIC.H
- From GO APPC Forum on CompuServe
- CMC.H with some C enhancements
- CPIC.LIB
- In \CMLIB\CMJ_IB directory
- Include on LINK step
Many applications can be written with just 6 calls
■ CMINIT lnitialize_Conversation
■ CMALLC Allocate
■ CMACCP Accept_Conversation
- CMSEND Send_Data
■ CMRECV Receive
■ CMDEAL Deallocate
■ CMCFM Confirm
■ CMCFMD Confirmed
^ Starting a CPI-C Conversation
Client
■ Start the conversation
- Initialize conversation (CMINIT)
0 Set conversation characteristics
— SET calls
Set_Sync_Levei (CMSSL)
■ Get a session
- Allocate a session (CMALLC)
mm i:r
mm
y CPI-C Conversation Initialization
CMINIT(conversation id,
symbolic destination name,
return code)
■ Accomplished with CMINIT call
- Tells APPC to start a new conversation
- Must be first call for a conversation
- Set the conversation characteristics
- CMiNIT
- Input
► symbolic destination name
- Output
► Conversation id
► Return code
& * ,C1 HN ° W I*® 1S * CT ' 1 m
CMiNBT Input
0 Symbolic Destination Name
- Name of an entry in the local CPI-C side
information table
- Must be 8 characters padded with blanks
- Must be NULL terminated in C
- Can be all spaces, which tells CPI-C you will
explicitly set the characteristics
- COBOL - SYM-DEST-NAME PIC X(8).
- C - unsigned char sym_dest_name[8 + 1];
: CMINIT Output
■ Return code
- Indicates if CMINIT worked
- If not CM_OK, can not proceed with allocating
the session for a conversation
Possible Return Values:
-CM_OK
- CM_PRODUCT_SPECIFIC_ERROR
- CM_PROGRAM_PARAMETER_CHECK
► Unable to find entry in side information table
- COBOL - CM-RETCODE PIC 9(9) COMP-4.
-C - CMJNT32 cm_rc;
■ Conversation SD
- The tag for this conversation
- Valid only if return code is CM_OK
- Must be used for all subsequent calls
- COBOL
CONVERSATION-ID PIC X(8).
- C
unsigned char conversation_id[8];
CMINIT C Example
#include <cpic.h> /* Or #include <cmc.h> V
h In C
memcpy(sym_dest_name, M TEST ",8);
sym_dest_name[sizeof(sym_dest_name) -1] = '\0'
strupr(sym_dest_name); /* not ANSI V
cminit(conv_id,
sym_dest_name,
&cm_rc);
if (cm_rc == CM_OK) {
/* CMINIT worked 7
} else {
1* CMINIT failed 7
}
CMINIT COBOL Example
COPY CMCOBOL.
■ In COBOL
MOVE 'TEST " TO SYM-DEST-NAME.
CALL "CMINIT" USING CONVERSATION-ID
SYM-DEST-NAME
CM-RETCODE.
IFCM-OK
. (CMINIT worked)
ELSE
. (CMINIT failed)
jfc (P B5M OoTKTofcn 1M4
Symbolic Destination Table
Symbolic
Destination Partner Mode Server
Name LU Name TP Name
CM/2 CPI-C Side Information Example
■ DEFSNE_CPIC_SIDEJNFO
symbolic_destination_name(test)
partner_lu_alias(LUY)
mode(#INTER)
tp_name(pgm1);
■ Stored in Network Definition File (.NDF)
« Also available via CM/2 panels
<C) BW Owpsrdten 18«
Set Sync Level - CMSSL
CMSSL(conversation id,
sync level,
return code)
■ This call is used to set the sync levei desired for a
conversation
■ Input
- Conversation ID
» Sync level
a OUtpUt
- Return code
CPI-C Set Calls
® Can be used to change the defaults
■ Required if symbolic destination name of all blanks
was used
» Must be done after the CMINIT but before the
CMALLC call
» CPI-C set calls for session allocation
—* CMSCT Set conversation type
- CMSMN Set mode name
OCD! K! Qp.f* ! ! j nnp
VJIVlOl 1—1^ pci I LI l“l ||<3ilie»
- CMSRC Set return control
- CMSSL Set sync level
- CMSTPN Set TP name
- CMSCST Set conversation security
CMSSL COBOL Example
- In COBOL
SET CM-CONFIRM TO TRUE.
CALL "CMSSL" USING CONVERSATION-ID,
SYNC-LEVEL,
CM-RETCODE.
IF CM-OK
ELSE
CMSSL C Example
- In C
CM_SYNC_LEVEL syncjevel = CM_CONFIRM;
cmssl (convjd,
&sync_level,
&cm_rc);
if (cm_rc == CM_OK){
} else {
}
(C} BN O«*tn#on 1S*S .A.?’#
Allocating a Session
CMAlLC(conversation id,
return code)
a Input
- Conversation ID
■ Output
- Return code
a Most difficult call to get working in your first APPC
application
Allocating a Session for a Conversation
■ Accomplished with the CMALLC (allocate) call
■ Establish a session with the partner LU
- only LU level, not yet talking to partner application
» Reserves local resources
■ No application data flows, but session to partner
platform is established
■ Some conversation characteristics can not be
changed after the allocate call
- Conversation type
- Mode
- Security
- Sync level
it (CJ EBU Craptrofan 1 MM
CMALLC Return Codes
■ CM_OK
- Call worked, but not yet talking to partner
application
» CM_PARAMETER_ERROR
- Something in symbolic destination or set calls is
incorrect (get sense data)
- C M_A LLO C ATE_FA I LU R E_N 0_R ET R Y
- Human intervention required
■ CM_ALLOCATE_FAILURE_RETRY
~ Retry the allocate command
- Must perform CMINIT processing again
’ r (C? CcrpcrvSa* 1 m A
**■: * •*>
CMALLC Examples
■ In COBOL
CALL "CMALLC" USING CONVERSATION-ID
CM-RETCODE.
IFCM-OK
■ in G
cmallc(conversation_id,
&cm_rc);
if (cm__rc == CM_OK)
" cmaccp
CMACCP(conversation id,
return code)
« Call has no input
■ Output
- Conversation id
- Return code
■ If return code is not CM_OK, no other CPI-C calls can
be issued
Accepting a Conversation
with CPI-C
» Accomplished with the CMACCP call
« Server process Accepts the conversation
a Must be the first CPI-C cal! in the server process
« Accepts the conversation characteristics
(C)nM Corparaton 16S4
v >:
CMACCP Example
a In COBOL
CALL "CMACCP" USING CONVERSATION-ID,
CM-RETCODE.
IFCM-OK
» In C
cmaccp(convJd,
&cm_rc);
if (cm_rc == CM_OK){
■ Conversation must be active before data can be
sent
■ Use the CMSEND call to pass a logical record to
APPC
- A non-blocking call (default)
- Used to send any type of data to the partner
program (request, reply, error message, etc)
» APPC may defer actual transmission of the data
to the partner for better network per iGrmance
CMSEND Output Parameters
■ Request to Send Received
- Set if partner program has issued a Request to
Send call (not usually used)
b Return Code
- CM_OK
Call executed successfully LOCALLY (data may
not have been sent to the partner yet)
- CM_PROGRAM_ERROR_PURGING
► Partner issued Send_Error call
CPI-C Call to Send Data
■ CMSEND (conversation id,
data_buffer,
sendjength,
request_to_send_received,
return_code)
* Input
- Conversation ID
- Data buffer to send
- Length of data buffer
CMSEND Example
* In C:
cmsend (conversationjd,
data_buffer,
&sendjength,
&request_to_send_received,
&cm_rc);
if ( cm_rc == CM__OK) {
In COBOL:
CALL "CMSEND" USING CONVERSATION-ID,
DATA-BUFFER,
SEND-LENGTH,
REQUEST-TO-SEND-RECEIVED,
CM-RET-CODE.
IF CM-OK
CMRCV (conversation ID,
data buffer,
requested length,
data received,
received length,
status received,
request to send received,
return code)
The Receive call is the most complex CPI-C call
a With the Receive call you
- Receive a logical record from the partner
program
- Test to see if the:
* Conversation is successful so far
> Partner has deallocated successfully
Partner has abended
- Partner wants to report an error
•» Partner has sent a data record
> Partner has switched to Receive state
> Partner has issued a confirmation or syncpoint
request
» Conversation ID
- Conversation tag
» Data buffer
- Buffer to put received data into
® Requested Length
- Maximum length (bytes) to receive
'v:vX-
CMRCV Output Parameters
w
•• CMRCV Output Parameters (continued)
■ Return code
- OK, or Deallocated Normal
“ If so, has data been received?
■ Data Received
- Only valid if return code indicates no error
- Indicates whether data was received on this call
* Received Length
- Only valid if return code indicates no error AND data
received is not CM__NO_DATA_RECEIVED
- Length of data actually received on this call (bytes)
■ Status Received
- Indicates whether the partner has issued a call to
change the state of the conversation
■ Request To Send Received
- Indicates whether partner has issued a Request to
Send call
mi r
M
CMRCV Example In C
CMRCV Example in COBOL
cmrcv (conversationJD,
data_buffer,
&requested_length,
&data_received,
&received_length,
&status_received,
&request_to_send_received,
&cm_rc);
CALL "CMRCV" USING CONVERSATION-ID
DATA-BUFFER
REQUESTED-LENGTH
DATA-RECEIVED
RECEIVED-LENGTH
STATUS-RECEIVED
REQUEST-TO-SEND-RECEIVED
CM-RET-CODE.
-«:*** Ending a Conversation
With CPI-G
■ Use Deallocate call (CMDEAL)
■ Ends the conversation, conversation ID is no longer
valid
* Program must be in SENE) state to issue CMDEAL
cal!
■ Can be issued by either client or server
■ Default deallocate type is the sync level used to
allocate the conversation
^Carport 1#*S
"' f: ' Confirm - CMCFM
CMCFM(conversationJd,
request_to_send_received,
return__code)
« This call is used to request confirmation from the
partner
■ Useful for synchronizing remote processses
■ Don't use unless you have a unit of work worth
synchronizing
■ This call is usually combined with a SEND DATA call
for efficiency
Deallocating the Conversation
CMDEAL(conversation id,
return code)
* Input
- Conversation id
* Output
- Return code
* If return code is CM_OK, conversation has ended
&&&&' (C) BM OarfxHoSan 1 AggSgtf
Confirmed - CMCFMD
CMCFMD (conversation id,
return code)
® Positive response to a CONFIRM request from parnter
* Don't reply to confirm request until you have
processed the data received successfully
« Tells partner you have done what was asked
APPC Market Enablement
APPC Market Enablement
Dept E42 / Bldg 502
P.O. Box 12195
Research Triangle Park, NC 27709 USA
Internet: appcmrkt@vnet.ibm.com
CompuServe: 76711,370
Phone: 1-919-254-4957
Fax: 1-919-254-6050
Internet Anonymous FTP Site: networking.raleigh.ibm.com
CompuServe Forum: GO APPC
Mm
le f.
Leys troki
♦set mf ans85 noosvs
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.
* HELLO.CBL "HELLO, WORLD" program; Sending side (HELL02.C)
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKINO-STORAGE SECTION.
* CPI-C Copy Member
COPY "CMCOBOL.CBL".
* Working Storage Variables
01 BUFFER PIC X (12) VALUE 'HELLO, WORLD*.
LINKAGE SECTION.
PROCEDURE DIVISION.
MOVE "HELLOD" TO SYM-DEST-NAME.
• CPI-C lnitialize_conversation call, supplying symbolic destination *
* name and receiving return code from call. •
CALL "CMINIT" USING CONVERSATION - ID
SYM-DEST-NAME
CM-RETCODE.
$set mf ans85 noosvs
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLOD.
» HELLO.CBL "HELLO, WORLD" program; Accepting side (HELLOD.C)
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
* CPI-C Copy Member
COPY "CMCOBOL.CPY*.
* Working Storage Variables.
01 BUFFER PIC X(100) VALUE SPACES.
LINKAGE SECTION.
PROCEDURE DIVISION.
* CPI-C Accpet_Conversation supplying conversation id and receiving*
* return code from call. •
CALL "CMACCP" USING CONVERSATION-ID
CM-RETCODE.
* CPI-C Set Sync Level call, supplying sync level to be set and
* receiving return code from call. *
SET CM-CONFIRM TO TRUE.
CALL 1 CMESL 1 USING CONVERSATION-ID
SYNC-LEVEL
CM-RETCODE.
* CPI-C Allocate call, rell, supplying conversation ID and
* receiving return code from call. *
CALL *CMALLC" USING CONVERSATION-ID
CM-RETCODE.
CPI-C Send_Data call, supplying buffer to send data frem, length
of data to send, and receiving requeat_to_send_received (ignored)
and return code frem call. *
MOVE 12 TO SEND-LENGTH.
CALL "CMSEND" USING CONVERSATION-ID
BUFFER
SEND-LENUTH
Rf QUEST-TO-SEND-RECEIVED
CM-RETCODE.
• CPI-C Deallocate call, supplying conversation id and receiving
* return code fran call. *
CALL "CMDEAL" USING CONVERSATION-ID
CM-RETCODE.
STOP RUN.
* CPI-C Receive supplying where to put received data, maximum
» length to receive and returning length of data received,
* status_received value, Request_to_send_Received (ignore this)
* and return code.
MOVE 100 TO REQUESTED - LENGTH.
CALL 'CMRCV' USING CONVERSATION-ID
BUFFER
REQUESTED-LENGTH
DATA-RECEIVED
RECEIVED-LENGTH
STATUS-RECEIVED
REQUEST- TO - SEND - RECEIVED
CM-RETCODE.
* This the data received frem HELLO
DISPLAY "DATA RECEIVED: ■ BUFFER.
* CPI-C Confirmed, supplying conversation ID and receiving return
* code from call.
CALL "CMCFMD" USING CONVERSATION-ID
CM-RETCODE.
STOP RUN.
60SD
Agenda
Selecting a
CommunidHllp :
API
Mel Jones
IBM APPC Market Enablement
Internet: meljones@vnet.ibm.com
Vnet: jones at ralvmG
919-254-4363
- Advantages, disadvantages and uses of:
- Remote Procedure Calls
- Message Queues
— Conversations
« How do you decide which to use
a Application design scenarios
▼ The Ideal Interface ^ Networking Blueprint
■ The ideal high-level interface would provide
- Common interfaces for all languages
- Network independence
- Local/remote transparency
- Automatic data conversion
- Two-way simultaneous (full duplex) as well as two-way
alternating (half duplex) data flows
- Centralized security service and directory service
- Syncpoint services
- Excellent performance
- Easy to program
® The ideal high-level interface would support
- Partners executing on different platforms
- Servicing multiple clients from a single server process
Ippr jppif jppgr JiPPif
Networking
Three Communication Styles
Using Remote Procedure Calls
Conversational Remote Procedure Call Messaging and Queueing
■ Remote procedure calls let your program call a
subroutine that can be in a different computer
■ RPC "stubs" exist on client and server to handle calls
■ The RPC software gathers parameters, supplied by
invoker, and delivers them to requested procedure
AjivSS-ft:?':" (CJ Corporation 193$
RPC Advantages and Disadvantages
RPC and the Ideal Interface
Advantages
- No communication calls are needed in programs
- Natural extension of programmer's existing skills
- Protocol and network independent
Disadvantages
- The program is blocked during call processing
- All the data must be prepared before the call is issued
- The program cannot detect network failures
- Multiple subroutines require a calling tree
- Complicated programming may be required to build and
administrate subroutine stubs
- The program cannot change its server without using
complicated verbs to manage names and bindings
Requirements met:
x Common interfaces
+ Network independence
+ Local/remote transparency
+ Automatic data conversion
* Full and half duplex
* Security and directory service
- Syncpoint services
- Excellent performance
+ Easy to program
+ Partners on different platforms
- Service multiple clients from a single server process
k won t have
❖ meets
- doesn't meet
m
W-s-'-y.
(CJ SSA Cwperaion IBM
M
m Moccano rsiic»iic»Q lot \/nur nrnnram s<^nH mfissanfis in
— Hiuwuuyu V|W»WV/W .Wl v..., <-- .— ...-O-
a queue serviced by a partner
■ Queue Manager software manages messages and
performs delivery function
■ Asynchronous Processing
- Write messages to outbound queue(s)
- Read messages from input queue
Jt <c) taw consoraMan i dm A. jiT
and the ideal interface
Requirements met:
- Common interfaces
+ Network independence
+ Local/remote transparency
- Automatic data conversion
x Full and half duplex
- Security and directory service
- Syncpoint services
+ Excellent performance
+ Easy to program
+ Partners on different platforms
+ Service multiple clients from a single server process
- Advantages
~ Verbs are simple
- Utilizes network resources efficiently
» Allows flexible application server distribution
- Allows for good processing overlap
- No calling tree built to return data to client
■ Disadvantages
- The program must correlate requests and replies
- The program must use timeouts to detect partner outages
- The programs must synchronize with messages
* Programs use conversations to communicate
b Application data and conversation status are
exchanged over a conversation
Programs communicate as peers
Conversations
Advantages and Disadvantages
* Advantages
- Flexible message exchange sequence
- Good processing overlap
- Synchronization under program control
- Related records are automatically correlated by the
conversation
- Easy to select partner
- Programs are aware of network status and partner status
» Disadvantages
- Many calls and alternatives can complicate the
programming job
- Multiple co-routines require a conversation tree
^ Choosing an API
■ Driven by application requirements
- Processing requirements
- Response time
- Network and data volumes
■ Don't get trapped by
- current in-house expertise
- current application base
■ Consider the restrictions which exist for each API
■ No API meets every requirement for every application
Conversations and the ideal interface
Requirements met:
+ Common interfaces
+ Network independence
+ Local/remote transparency
+ Automatic data conversion
- Full and half duplex
- Security and directory service
+ Syncpoint services
+ Excellent performance
- Easy to program
+ Partners on different platforms
+ Service multiple clients from a single server process
P) F0M Corporator! 1SM
JL S-fjw.y
■*%< V "V
r Travel Agency Application
■ What is the travel agency application?
- Make airline, inter-airline, hotel and car reservations for
clients
- Verify credit card purchases
- Provide itinerary to client
■ Application requirements
- Communicate with external systems
- Update local databases
■ Application processing
- Local agency records all travel information
- Travel information sent to specific organizations i.e., airline,
hotel and car rental for processing
AW: 1 # 1 * P) EM Corporator! 1 EM i :vXjv*v
* won t have
- meets
- doesn't meet
Which APS for Travel! Agency?
Order Entry Application
- Using RPC for travel agency
- Blocicing would bo a problem
- Configuration maintenance for external systems
* Using Conversations for travel agency
— No guarantee all reservation systems will be available
- Resource requirements may be excessive for many
concurrent conversations
Ill'Ll sing MQ for travel agency
- Good for time-independent processing
- Good for external system connections
■ What is Order Entry?
- Mission critical application for accepting orders
- A client/server application to achieve maximum usability
and performance
- Used nationally
* Application requirements
— Communicate with local and remote processes
- Update local and remote databases
- Response time is critical
■ Application processing
- Workstation obtains order information and performs local
validations
- Host applications performs validations, stores orders and
generates order number
|(cgEMCwporaaorisw
mm
(C) BM CorpirSIWl 1S84
Which APS for Order Entry?
- Using RPC for order entry
“ Databases located on the mainframe
- Network status information unavailable
■ Using MQ for order entry
- Application would have to coordinate requests and
responses
- Unpredictable response time or order processing
ggfUsing Conversations for order entry
- Provides needed communication status information
- Meets response time requirements
^ Summary
■ There are a number of competitive interfaces for building
distributed applications, with no universal winner
■ The application requirements will drive your network API
choices
* Application requirements will change, your network
interface must be able to react
■ Choose wisely, changing your mind can ruin a lot of
weekends
- Remember, RPC and MQ applications will work on an
APPC conversation
CB10: Usim f AfflU Satte
Features am
GmsldemtSoiisS?
David T. Lutz
||| IBM Corporation
III APPC Market Enablement
HH Internet: davejute@vnet.tom.com
■ IBMMall: USIB5N27 at IBMMAIL
Phone: (919) 254-4-166
Basic Features and Design Considerations
a Fundamental design decisions
- Allocating and deallocating conversations
- Sending and receiving data
- Reporting errors
- Synchronizing programs
b Factors used to make the decisions
b Program logic that is affected
- Local program
- Partner program
tm
APPC Conversation Terms
■ Transaction
a Conversation
■ Short conversation
T ransaction
Long conversation
Transaction: An exchange of information
that accomplishes a particular action or result
Conversation
■ Conversation: A logical connection used by two
programs to exchange information
Short and Long Conversations
■ Short Conversation
• One transaction per conversation
« Long Conversation
» One or more transactions per conversation
Preparing for Conversations
Conversation Lifetime
Eahy design decisions smooth APPC application development
Decisions about the relationship between the application and its conversations
- How long should a conversation be?
- How wiH the application data be organized into logical records?
- What application program interface (API) should be used?
Decisions about the APPC features
- What type of APPC conversation should be used?
- Should session security be recommended?
- Will the conversation security feature be used?
- Will the synchronization feature be used?
a Use short conversations when
- The overhead ol starling and slopping conversations is less
significant than the ability to share network resources
- The transactions can be processed independently
■ Use long conversations when
- The overhead of starling and stopping conversations is more
significant than the ability to share network resources
- The transactions depend on each other
■ Conversations exchange logical records
■ A logical record may contain any binary value
■ A logical record may be of any length from 0 to some
platform specific maximum (327(57 for CPI-C)
■ Build one application record into on® logical record
. Build multiple application records into one logical record
■ Split a single application record into multiple logical records
^ 1 Application Record = 1 Logical Record
Many Application Records = 1 Logical
Record
S@neL.Data SencLPata
a Build multiple application records into one logical record when
a The caH overhead must be minimized AND
Build one application record into one logical record when , You can tolerate the logic needed to combine and delimit the application
- The call overhead can be tolerated records
'*$8? ^ Application Records = Many Logical
'■ Record
SencLJData SencLData
Splil a single application record into multiple logical records when
■ The record fields are scattered all over memory AND
" The overhead of moving the data to build a logical record is greater than the
call overhead
v Choosing a Conversation Type
a APPC platforms offer Mapped and Basic
conversations.
® We recommend Mapped conversations
- Exchange arbitrary data records in data formats that have
been prearranged between application developers
a Basic conversations have the following capabilities:
- Multiple logical records in a single buffer
- A small performance advantage
- Other, more obscure functions
Allocating a Session
■ The allocating program must provide
- TP name: Name of the partner program
- LU name: The location of the partner program
- Mode name: The network services required
- Sync_Level and Security parameter values
- Defaults for all other parameters
a The receiving program must
- Be defined with a matching TP name, conversation type,
security, and synchronization level
- Accept the conversation
► Explicitly using an Accept_Conversatlon call
- Implicitly (some platforms have a default conversation)
■' LU's, Modes, and TP's Oh My!
* APPC Synchronization Tools
By synchronizing, you know that the partner has
successfully processed ail the data sent so far.
b Use Allocate sync_lev©ll(Non®)
- to synchronize implicitly by exchanging data
» Use Allocate syncJevel(Confirm)
-to synchronize programs without sending an extra logical
record
b Use Allocate syncJevei(Syncpt)
- to modify data using two-phase commits
Sea
b Security is required to protect sensitive resources
- From an attacker pretending to be a valid user
- To ensure only authorized users have access
b Security is implemented with two tests(in order)
1. Authentication
► Is this user who he claims to be?
► Does he know the secret password?
2. Authorization
► Is this user authorized to perform the function?
► Is the user's ID in a list of authorized users?
■ Security services are provided by some platforms to
assist applications
APPC Security Tools
b Security problems
- An attacker’s computer may attempt to gain access to your
network or server
* Use APPC session security
- An attacker may gain access to a valid computer and
masquerade as a valid user
★ Use APPC conversation security
a Security services incur overhead of password
administration
- LU-to-LU passwords
- User ID passwords
Conversation Security of SAIMIE
a APPC will get signed-on user at conversation allocation time
Sending Data
'** Receiving Data
® Use Send_Data to send a logical record
■ Before using Send_Data, the program must have
permission to send
- After using Allocate successfully
- After using Send_Data successfully
- After using Send_Error successfully
- After using a successful receive operation where
permission to send was in the status indicators
■ The sending program must
- Build a logical record
- Issue the call and process the return code
■ Receive
- When necessary, gives ihe partner program permission lo send
- When necessary, suspends (i.e., blocks) caller lo wait tor data
- A program must receive data when it has:
- Given the partner permission to send
- Received a Prog_Error_Purging return code on a previous call
- Received data successfully wilh no change in status
- Accepted a conversaton
■ To receive, a program must
- Issue the call and process the return code, data received, and the
relumed status
a The partner program must
- Recognize lhal it has permission to send
mm
mm
mm
mm
X:: Synchronizing
Conversation Failures
Only the program with permission to send can request
synchronization.
- Use Confirm at the end of a transaction in a long conversation
- Use Deallocate type(Sync_Level) at the end of a transaction in a
short conversation (conditional conversation)
The program must
- Recognize that it is time to synchronize
- Issue the correct call
The partner program must
- Watch the status indicators while receiving
- Process all data that was received so far
- If processed successfully, send the Confirmed call
*■ Otherwise, report an error
» Regardess of synchronization techniques
- If the conversation fails, the program cannot tell it
► The partner did not receive the synchronization request and
abandoned the transaction
► The partner received the synchronization request, processed
everything successfully, but the confirmation was lost
■ If the transaction does not modify anything, just repeal the transaction
that failed
■ If Hie transaction modified something, protect against unwanted
duplicates through
- Human intervention
- Application backout and recovery through the use of audt trails
- Use ol syncpoini services
ig Errors
Deallocating a Conversation
Report an error with Send_Errar when
- The program cannot build the next logical record to be sent
- The program cannot process the last logical record received
The program must
- Recognize the error and issue the call
- Always follow up by sending a record that describes the error
- Recover as required
The partner program must
_ Look for P rog_E r ro r_N o_T rime and Prog_Error_Purglng
return codes
- Receive the logical record that describes the error
- Recover as required
The Starter Set
In most circumstances, these calls are enough
APPC
CPi-C
Allocate
CMINiT
Receive_AI locate
CMALLC
SendLData
CMACCP
Recei ve_a n d_Wn it
CMSEND
Deallocate
CMRCV
Confirm
CMDEAL
Confirmed
cmm
SendJError
CMCFMD
CMSERR
« Use the following types of Deallocate
- Flush to end the conversation normally and
unconditionally
_ SyncJLevel when synchronization is required
_ Abend when an error proves to be unrecoverable
■ The partner program must
- Watch the return code fields for
► Deallocale_Normal
► Dealiocate__AbBnd
Simplifying Assumptions
. Use CPI-C
■ Use Short conversations
■ Design one application record for one logical record
■ Use Mapped conversations
■ Give the session security choice to the users
■ Use Allocate security(Same)
- Use Allocate syncJevel(Confirm)
. Use Deallocate type{Sync_Levei)
Bmpmving Performance
Using APPC: Performance
and Security FmMms
APPC Market Enablement
IBM Networking Systems
Research Triangle Park, North Carolina
919 - 254-4957
appears rkt at ralfomi®
27709-2195
» Special calls and parameters can optimize an application's
performance
■ These calls affect
- Amount of processing overlap between two programs
- Network overhead
- Call overhead
- Storage overhead for receive buffers
- A programmer must know
- When the special call or parameter is beneficial
- How the local program's logic is affected
- How the remote program’s logic is affected
mm
^igf
Understanding Processing Overlap
improving Processing Overlap: Flush _
, ra on cwjwmton iw
■ Use Flush when
- There is a significant delay before sending next record AND
- There is an advantage in processing overlap AND
- The advantage outweighs the extra call and network
overhead
a Design the program to know when Fflush is
advantageous
» Flush is transparent to the partner program
CS11
W Improving Processing Overlap:
Prepare To Receive
■ Use Prepare_To_Recesve type(Flush) when
" Sending program wants to give permission to send AND
- There is a delay before sending program is ready to receive
AND
" There is an advantage in processing overlap AND
“ The advantage is greater that the disadvantage of the call
overhead
Design sending program to know when
Pr@pare_T©_Receiv@ is advantageous
■ Prepare_To_Receive type (Flush) is transparent to
the receiving program
■ Use Prepare_To__R©ceive typ©(Confirm) when
" You want to synchronize and give the receiving program
permission to send AND
“ There is a significant delay before the sending program is
ready to receive AND
“ There is an advantage in processing overlap AND
- The advantage is greater than the disadvantage of the call
overhead
» Design the sending program to know when Prepar©_To_Receiv©
is advantageous
■ Receiving program must
- Recognize the Confirm_Send status
- Perform the confirmation processing
- If successful, remember it has permission to send
.. Combining Send Data with Other Functions
Using Combined Indicators
Combining calls improves performance
■ Send_Data can be combined with
- Flush
- Confirm
» Prepare_To_Receiv© type(Fiush)
- Prepare_To_Receive type(Sync_level)
- Deallocate type(Flush)
- Deallocate type(Sync_Level)
- Deallocate type{Abend)
■ Sending program must know what happens after
Send_Data
■ Combined junctions are transparent to receiving
program
Combined indicators improve performance
■ CPI-C always attempts to return combined indicators
■ Valid status combinations used while receiving are
Data indi cat ors Status Indicators
- Data_Complete
and
Deallocat@_Normal
- Data_Com piste
and
Send
- Data_Complete
and
Confirm
- Data_Compiete
and
Confirm_Send
-■ Data_Complete
and
Confirm_Deallocate
■ Receiving program must contain special logic
■ Combined indicators are transparent to the sending program
-■'Coding the Logic for
Combined indicators
* Process the indicators in the correct order
1. Return code OK or Dealloceite_Normal
Check data indicators and process the data
2. Return code OK
Check the Status Indicators
First check for a confirmation request
Then check for permission to send
Finally check for conversation deallocation
3. Otherwise, the indicators have no meaning and the
return code must be analyzed
« Don’t assume data and status are always combined
■ Use Confirm to take intermediate checkpoints
- Reduces the time it takes to recover from a failure
- Increases the delay for each transaction
■ Sending program must use Confirm at a checkpoint interval
- if Confirm returns OK
► Advance recovery parameters
► Purge intermediate results
- If Confirm does not return OK
► Return to the last known recovery point
► Retry the transaction
- Receiving program must
-Watch for the Confirm status indicator while receiving
- Process the data received thus far
► II successful, record recovery parameters and issue Confirmed
► Otherwise, report an error
f Receiving Less than a Complete Logical
Record_ .
■ Receive less than a complete logical record when
- It is impossible or too expensive to allocate a buffer large
enough to hold the largest possible logical record
- The advantage in reduced memory overhead is greater than
the disadvantage of the call overhead
h The receiving program must
- Recognize the Datajncomplete data indicator
- Perform extra receive operations when necessary
- Process a logical record that is received in pieces
■ The sending program cannot tell that the logical record is
received in pieces
■ Most performance changes can be made without the
partner knowing
■ Processing overlap can be improved
■ Performance can be improved by
- Combining functions with SsndJData
- Receiving combined indicators
■ Mid-transaction check points can reduce recovery time
but the tradeoff is extra delay in total processing time
■ A logical record may be received in small pieces
- Reduced storage
- Extra receive calls
Using APPC Security Tools, part 1
Using APPC Security Tools, part 2
It you rely on physical security, don't bother with
anything else
Use session security when
- There is sensitive data or sensitive procedures to protect AND
- The links between systems are not adequately protected AND
" The user can tolerate the overhead of password administration AND
- The configuration files that contain the passwords are adequately
protected ’’
Use conversation security when
- All users are not given access to everything OR
- Attackers may gain access to a valid system AND
- The user can tolerate the overhead of password administration
Use additional security measures in your application
when
- You need session and conversation security, but the APPC services
are inadequate
- You need to protect sensitive information from attackers who can
capture a link trace
- You need to protect against attackers who capture records, modify
them, and then send them on
C) BU CwpMssfen 1«M
mm
mm
APPC Conversation Security
APPC Conversation Security
Chosen when the SECURITY parameter is on the ALLOCATE
verb
Use Sacurity(Same) when
- Both the source and target systems have security services
that authenticate users
- Both systems support the "already verified" option set, and
the target system can safely trust the source system
- Both systems support "persistent verification"
Use S©€urity(Sam@) whenever possible to take advantage of
enhancements to conversation security
Use Security(PGM ...) and provide a user ID and password in
application when
- The source system does not have security services, but the
target system does
- Your program can obtain a user ID and password
- You can tolerate the exposure of the password on the link
- You can tolerate the overhead of the security check that the
target will perform for every new conversation
Use Security (No no) and exchange the user ID and password in
the data when the APPC conversation security is inadequate
CS12: APPC Semrity for
ApplScationl^^^mBts
APPC Market Enablement
IBM Networking Systems
Research Triangle Park, NC
appcmrkt@vnet.ibm.com
919-254-4957
Agenda
■ Route security
a Session security
s Conversation security types
_ DiiilrJinrt oorM iritw into v/m ir a nnJi nation
- uunumy ^vumj " r ,, ~ , ■
■ Cascaded servers
mm
(CJ EM Corporatei IBM
asm
Route Security
■ Selection of a secure route through the network
> Application can control route selection through mode
name choice:
- APPN secure modes:
- #1NTERSC
> #BATCHSC
- Mode parameters control compression and encryption —
need to be configured
« May involve automatic encryption of data on the
session
Session Security
» Does not require changes to applications
a Assures that your computer is talking to a valid partner
computer
* Enables conversation security mechanisms that count
on "trusting" the partner computer
» Passwords are protected
mm
mm
(CJ EM Corporator! 1904
(C) IBM Ccrperetton 1994
Conversation Security Types
Security SAME Mechanisms
- NONE
- No security information is sent
«PROGRAM
- Program supplies a user ID and password that are sent in
the Attach in the clear
“ Program usually prompts user for these values
- SAME
- APPC automatically transfers local user information in the
Attach
- A number of mechanisms exist
- User ID must exist on the target system for proper
authorization
■ Already Verified (AV)
- Requires that server computer "trust" the client computer to
verify user's identity
- User ID is sent with an already-verified indicator
- No password is exposed
■ Persistent Verification (PV)
- User ID and password are sent on first Attach only
- Subsequent Attaches contain only the user ID
■ Enhanced Security SAME
- User ID and password are sent in every Attach
- Avoids user intervention
mm
k
mm
M
Security SAME May Revoke User ID
Problems with Each Security Type
Persistent verification and enhanced security SAME
will send a user ID and password
Treated like any other logon attempt
Repeated failures may result in revocation of user ID
Client program can't tell PV or enhance security
SAME was used
- SAME
- Already verified should only be used if session security has
been configured
- Fails if user ID does not match
- PV and Enhanced SAME fail if password does not also
match
- User ID revocation
- NONE
- Most transaction programs require security
- User ID may be required to start server pgm.
- PROGRAM
- Exposes password in the clear
- Requires user intervention (or configuration)
mm
mm
mm
As
<qefclCorpo<«Jcn1SM
(q taw Ccrporatksn 1 MM
Programming Considerations
‘ :r GP1-C 1.2 Security Calls
Choosing one security type to use is not sufficient
Security choice is determined by installers and users
Programs need to be capable of using ail security
types
Platform support for security SAME will improve in the
future
Set_Conversation_Security_Type (CMSCST)
- CM_SECURITY_SAME (default)
- CM_SECURITY_NONE
- CM_SECURITY_PROGRAM
Set_Conversation_Security_User_ID (CMSCSU)
Set_Conversation_Security__Password (CMSCSP)
Product specific extension versions also exist
- Replace CM with XC
- Available on VM, OS/2 CM/2, AIX
(CJBM&ypcnatonlHM
" ::r Three Security (Methods: Overview
Method 1: Letting Users Tell You What To
Use
■ For example, command line flags:
(default) use security SAME
-n use security NONE
-uUSERJD -pPASSWORD
h Letting users tell you what to use use security PROGRAM
a Avoiding user interaction until last possible option m y\/ 0 rks well in automated environments (never needs
» Prompting users for what they want to use to prompt for information)
■ User must be aware of security type options and when
to use each
a Example: APING
••• w
(CJ BSM Corparattcn 1994
(Cj IBM Corporation IBM
• w Method 2: Avoiding User Interaction Until
w Last Possible Option
■ Try security types in the following order:
1) SAME
2) NONE
3) PROGRAM, after prompting for values
■ When possible, connection is established without user
intervention
® User does not need to know about security options
■ NONE may be used, yet user ID authorizations
required for successful execution of the program
■ Example: ATELNET
<9 BM Corjx«tton 1 jl
Cascaded Servers
■ Useful when needed resource is not on
the computer the client is connected to
■ Intermediate server Allocates to database
server to complete client’s request
■ Security SAME says, "Use security
information that the client provided."
<C) raw 1M4
Method 3: Prompting users for what they
want to use
■ Prompt for user ID. If response is:
(nothing) Security SAME. If fails, try
NONE.
"anonymous" Security NONE.
any string Prompt for password and use
security PROGRAM
■ User does not need to become a security expert
■ Security NONE is hidden behind the often familiar
concept of anonymous login
a User interaction is always required
» Example: AFTP
Summary
■ Use mode names to select route security
■ Advise installers to configure session security
appropriately
a Select and utilize different conversation security types
depending upon user/installer requirements
■ Design applications to utilize an appropriate security
methodology
(C) BM COTKSttkWl 19M
CS13: Cm§g«ati§
APPUAPPMm.m*-
Workstation *l§r
APPC Market Enabtemont
IBM Networking Systems
Research Triangle Park, NC USA
1-(919)-254-4957
appcmrkt@vnet.bm.com
Agenda
a NN/EN/LEN configuration considerations
a Naming conventions
a Sample configurations for CM/2, Networking
Services/DOS, AIX SNA Server/6000
mm
Elements of configuration
^ A PPM node types
■ Configuration elements
- Local LU (Control Point)
» Partner LUs
- Links
- Connection networks
- Modes
- Class of service
- Transaction programs
- CPI-C side information
■ Most are not needed when using APPN
« In general, LESS IS BETTER!!
a Low entry networking node (LEN)
- Peer connections
- Network endpoint
■ End node (EN)
- LEN +
- Registers LU names it owns with NN
■ Network node (NN)
- EN +
- Provides network services to LENs and ENs
- Resource Registration
* Directory services
► Topology and route selection services
- Intermediate session routing
CS13
APPM reduces configuration
Evolution of Link Configuration
Network Node End Node LEN Node
LU Name LU Name
NN Server
ENA
a
ENB
LU Name
Ail Partners
All Modes
#m
o
Before APPN, SNA definition was complicated
- Link information required for EVERY partner
APPN has reduced the required definition
- End Nodes only need address of a Network Node
- Network Nodes need addresses of other NNs
Discovery makes it even simpler for LANs
- ENs and NNs need NO link definitions for APPN
service!
- Low Entry Networking nodes need NO NN link
definitions!
m€
* Discovery is...
Connection network
Dynamic LAN Address Resolution
Provides a mechanism tor finding nodes on a LAN
- Determines LAN addresses of remote nodes
- Finds nodes based on routing capabilities and group
memberships
Allows ENs and LENs to dynamically discover the
network node address
Allows APPN nodes to communicate directly, without
having sessions routed through a network node
Eliminates link definition to partners on LANs
Use one connection network per LAN
LENs cannot participate
ENA
n nn
Beta code available on CompuServe
EN B
w
Network node design
End node design
Each network node
- Should have links to two other network nodes to ensure
availability
- For LANs without Discovery, use locally administered
addresses to avoid reconfiguration
Remember maximum links per adapter in network
node restricts number of end nodes it can support
Each End Node
- Must know the address of its Network Node
- May have a backup Network Node
- May have connection network definition for performance
Discovery will simplify link definition
mm
me
^ Naming conventions
NETID.LUNAME
■ Fully-qualified LU names are 8.8
■ Use FQ LU names that are unique
■ Register network IDs
► IBMer runs SNAREGISTRY a|^>licatk>n on HONE
■ Use central administration
■ Minimize the number of independent LUs per
workstation
Network Example
NN
Configuration methods for CM/2
CM/2 network node configuration
■ Panels
- Easier the first time
- Syntax always correct
- Security information must be entered via panels
- Can become time consuming
« Text file (.NDF file)
- Easier to duplicate
- Easier to view entire configuration
- Easier to debug problems
- Easier to make mistakes
- Use template file provided by CM/2
DBPINR_LOCAL_CP
PQ_CP_NAME
CP_JU,IAS
nous, .type
(USIBMNR. NRR5 0AFD)
(MYLU)
(NN) |
DEPINE_CONNECTION_NETVfORK
(USIBMNR. CNNET01)
(DLC_NAME (IBMTRNET)
ADAPTBRJIUMBER (0) ) ;
DBPINBJLOGI CAL_LI NK
LINK_NAME (NETN
DLC_NAME (IBMT
ADAPTER_NUMBER (0)
DESTINATION_JU)DRESS (X'SO
AC^']VA'rj<_A':_HTAR , '' 0 :- (YHC)
cf_c:-_n*:osion_xot'P»st (rc<.vi
CM/2 network node configuration
(continued)
CM/2 end node configuration
DBFIREJ-OCICAI^LINK /♦ LlnX to 2nd
LINK_NAHB (NBTN0DB2) /«
DLC_NAME (IBMTRNET) /«
ADAPTBIUNUMBBR (0) /«
DESTINATIOK_ADDRESS (X 1 60000C730200 1 ) /* Addross Of |
ACTIVATB_AT_STARTUP (YES) /*
CP_CP_SESSIOH_SUPPORT (YES) ; /* APPN Connoci
DBPINE_DEPAULTS /• Dofino D«£ai
IMPLICIT.ZNBOUHD.^LU.JSiTFPCaT (YES) '« A*JOld FLU ct
DBPAULT_MODE_NAME (((INTER) /*
DIRBCTORY_FORJNBOUNDJITTACHBS (C. \APPCTPS) /• Auto-Rosolv<
DEFAULTJTP_PROCRAK_TYPE (FULL_SCREBN) /«
DBFAULT_JTP_OPBRATION (NONQUEUED_AM_STARTED) ; /*
START_ATTACH_MANAGER: /«
/* Saiiplo Nodo Dofinition Filo for End Nodo
DEFINEJAJCAI^CP /* Dof ln«
PQ_CP_NAME (USIBMNR. NRR51AFD) /•
CP_ALIAS (MYLU) /♦ Samo I
NODK.CYP^ (BN); /* EK or
DEFINE_CONNBCTION_NETWORK /* Connor
PQ_CRENAME (USIBMNR. CNNET01) /*
ADAPTERS NFO (DLC_NAME (IBMTRNET) /«
ADAPTER^NUMBER (0));/*
DEFINE_LOGICAL_LI NK /* LlnK t
LINK_NAME (SERVER ) /*
DLC_NAME (IBMTRNET) /•
ADAPTBR^NUMBBR (0) /•
DESTINATION^ADDRESS (X•60000C730100 1 ) /• Addros
ACTIVATE_ATUXVADTtTP (YEA) /*
cp_.':p_£*R>io:ci^_j>t:r:<wr (yss). /- appn r
CM/2 end node configuration (continued)
Pre-VTAM 4.1 subarea scenarios
DEFINK_DEPAULTS
IMPLICIT_INB01TND_PLU_SUPP0RT <YBS)
DIRBCTORY_pOR_INBOUND_ATTACHES ( >)
DEPAULT_HODR_NAMB (IIWSRl
DEFAULT_TP_PROGRAM_TYPE (FULL_JJCKBENi
DEFAULT_TP_OPERATI ON (NONQVEirED_J'Jl__SrA*TEl))
/♦ Define Defaults */
/♦ Avoid PLU conflg. */
/* V
/•
;/«How should TP a tart?*/
/* This CM provldod TP allows ramota Display of APPC configuration
U5FI!TEl_Tr /* TP DofiEtJiai
TP..HAMS (RJMPSRVU)
FILFSPBC (C\CMLrP.\DS?aEVR\IinsP4.R'ri2.fara) ; /*
START_>TTACH_HANACER;
Local (LAN Attached) host:
Define wildcard at each end node
Remote (Modem Attached) host:
Define wildcard at network node
CM/2 ~> host LEN Example
Wildcards
DEFINRJXXaCAI^LINK
LINKJJAME
ADJACENT_ftODR_TYPE
FQ_AQJ.\.C3E‘Pr_C P JTAK2
DLC_f*iME
ADAPTER_NVKSER
DESTINATION_ADD«ESS
C :-_C P_5>KK e I C«_SD PAW
ACTIVATE.AT_STARTU P
L noTB D_R E S OU R CB
BOI,ICIT._8 6CP_IU8SIOn
(UttXOOOl)/* Dafina link to aubaraa
(LKAHM) /* l^aarn type (IW.KN. LBN)
.;piT»fn!.ini« 3 wci) !* esep hoj»
(iemi-ahkt) /•
(o) /«
( X 1 <,OOOJ?4SOOOOM /* J745 LAN addr
/* > r.o ap<m support
(n:s) /*
(MO) /• 1/aava sessions up
(YES) I /* Support dopacdozit LD»
DEFINK_PARTNER_LU
FQ_PART?«RJLU_fRME
PARTNER_LU_ALIAS
C ONV_S ECU RITY_VER I FI CATI ON
PARALLEU.SESS I ON_SUP PORT
(USIMWflt.FRSO’ltSI ) /• Partnar LU */
(HOST) /* */
(NO) /» alraady verified«no */
(YES); /* */
DEFINE_PARTNER_LU_LOCATION
FQ_PARTNBRJ,U_WiKE
WILDCARD_EtfrRY
FQ.OWTI HO..C P_JfAK2
LOCAL_HODE_t*l_SERVBR
(UllIKHK.NRSOlOI ) /* Partnar LU */
(NO) /* ccarpi«to nasie*/
(us;:a«KE.iniH3«i ) /* wm-.* Uni? */
(NO)i /• LEN •> no NN */
i
a Reduce the burden of defining LEN nodes to their
network nodes
■ Partial or Full
- Specify LU mask
- Only one full wildcard allowed in all network nodes in
network
■ Useful for non-APPN subarea network connections
mm
Mm:
mm
*■' Wildcard into subarea
Using VTAM 4„x as your NN
/• NDF Fragments for the Subaroa Adjacent NN, or for each EN •/
DEFI NE_LOCI CAL^LI NK
LI NR_NAME
r 0_>D JACE RT_C P_HAME
ADJACBNT_NODE_TYPE
DLC _NAME
ADAPTER_N UMBER
DESTINATI ON^ADDRESS
ACTI VATE^AT_STARTUP
CP_CP_SB36ION_S CT-PCHT
solicit. fiec?__iSE6« ton
LrMITE 31 JESOCriCH
(SUBAREA)
(USIBMNR. VTAMSSCP)
(LEN)
(IBHTRNET)
(0)
(X 1 400037450000')
(NO)
(HO)
/* Link to Subarea •/
/* V
/* SSCP nano •/
/* LEN Connection */
/• •/
/* •/
/♦ Uao 3270 CW Addr. ♦/
/* Do Not Autoactivata •/
/* IJBK-ito .\P?K supjxort */
/ v flujipo: t DI.tTt • /
/« J.iiav k a««tiOQit S3: *t
DEFI NE_PARTNER_LU_L0CATI0N
A OT ’ NS RJL 0 _JCA«* MOIUMNT'. UCA)
V.r Lt<ACD_)3tP!'K r
FQ_0WNI NC_C P_NAME
local_node_nn_server
(PARTI At)
(USIBMNR.VTAMSSCP)
(NO) ;
/• Subaroa wildcard
t* Wildcard Monk
/» Portia:. Nildcord
/• Route Allocates to:
/■* Need if wo are a NN
- Improves performance
- Eliminates extra configuration for subarea
- Allows APPN alternate routes to function
AiffC
m€
AMt
Modes
Transaction program definitions
A set of modes is pre-defined by APPN!
■ APPN user modes
- #INTER and #INTERSC
- #BATCH and #BATCHSC
-#CONNECT
■ CM/2 Compression modes
- #INTERC, #BATCHC, #INTERCS, #BATCHCS
■ Other APPN modes
- SNASVCMG : SNA sen/ice manager mode for
independent LUs
- CPSVCMG : control point service manager mode
■ Avoid creating new modes!
■ Check RU (request unit) sizes for performance
/* Tbl3 CM provided TP allows remote Display
DEFINE_TP
TP_NAME (RDSPSRVR)
CONV_SECURIFY_RQD (NO)
FILESPEC (C:\CMLIB\DSPSRVR\RDSPSRVR.EXE);
of APPC configuration
/♦ TP Deflntlon
/*
/• No socurlty chocks
START^ATTACH ^MANAGER ;
■ TP name is received on Attach
■ TP definition maps TP name to executable
■ Watch security parameters (conversation
security)!
DEFI NR_C PI C_SI DE_I NFO
SYHBOLIC_DE5TINATION__NAK3 (TOXPPC )
FQ_PARTNER w J J U_NAHE(U3IByT0.rC>{y..B7P )
M0DK_NAHE (SINTER )
TP_NAME (aplngd) ;
■ Provides a symbolic destination name that
includes:
- TP name
- Mode name
- Partner LU name
■ Some platforms have security extensions
■ Use SET verbs in applications to eliminate
need
■ Replaces AIX SNA Services/6000 1.2
■ Supports end node and network node
- AIX SNA Gateway/6000 also available
b Uses SMIT (System Management Interface Tool) to
configure profiles
^ AIX SNA Server/6000 configuration
b The same elements need configuration
- define_local_cp --> Control Point profile
- define_connection_network - > APPN Connection
Network profile
_ define_logical_link - > Link Station profile
- DEFINE_DEFAULTS ~> SNA System
Defaults profile
(There is no search path lor TPs)
- define_tp -> LU 6.2 Transactlon
Program Name profile
- DEFlNE_PARTNER_LU_LOOArON -•> Partner LU 6.2
Location profile
(Specify wildcard in partner LU name: ’USIMBNR.")
- DEFINE_cpic_SIDE_INFORMATION LU 6.2 Side Information
profile
W
" Networking Services/DOS
b Replaces APPC/PC
b Provides theCPI-C programming interface
- DOS and Windows
- Family-API programs can run in DOS or OS/2
b Supports Low-Entry Networking (LEN) node
b Uses text files for configuration
^ f^S/DOS configuration
■ Required node definition (CONF8G.NSD):
// Sample network configuration file for token-ring
//
NSDC LAN // Adapter type
NSDN CJSIBMNR. NRR53ABC // Local LtJ name; 3-17 characters
TRLD SERVER, 60000C730100 // Link to NN Server
a Transaction program definition:
DEFINETP.NSD
// Transaction Receive Incoming Transaction
// Program Allocate Allocate Program
// Name Pllespec Timeout Timeout Operation
// .
APINGD APINGD 20 30 operator_started
- CPS-C side information: SIDEINFO.NSD
a Mode definitions: MODE.MSD
W
•' Summary
■ Remember APPC configuration tips
- Use APPN to reduce APPC configuration
- Use connection networks on LANs
- Follow naming conventions
- Use wildcards to attach to pre-VTAM 4.1 subareas
- Avoid defining new modes
■ Use APING to verify configuration
■ Consult the Multi-platform APPC Configuration Guide
mm
me
Mm
Where to go for more Information
More questions?
Recommended IBM books
-CPI-C Reference (SC26-4399) for programmers
- Best of APPC, APPN, and CPI-C CD/ROM (SK2T-2013)
APPC/APPN Technical Conference '94
- Amsterdam, September 26-30
APPC Connection newsletter
CompuServe - GO APPC
OS2BBS on IBMLINK - APPC forum
FTP site on Internet
- Anonymous ftp to networking.raleigh.ibm.com
(192.35.236.4) and look in /pub/appc_appn
APPC Market Enablement
Dept. EA6/Bldg. 502
P.O. Box 12195
Research Triangle Park, NC 27709
VM: APPCMRKT at RALVM6
Internet: appcmrkt@vnet.ibm.com
CompuServe: 76711,370 !GO APPC
Phone: 1-919-254-4957
Fax: 1-919-254-6050
Improving-APPCi
Configuration
APPO Market Enablement
IBM Networking Systems
Research Triangle Pmrk r NC
appcmrkt@vnetbm.wm
1-919-254-4857
Goals
Goal: To improve APPG network configuration
a Remove configuration as a barrier to APPC
acceptance
■ Encourage developers to design and document
applications with configuration elimination in mind
■ Provide consistent, cross-platform configuration
documentation
■ Promote new technologies that eliminate configuration
me
Configuration can be very difficult..
.Configuration can be very simple
a Too much information is required
- Local LUs
- Partner LUs
- Modes
- Transaction programs
- Links
- Security
- CPI-C Side Information
■ Not enough defaults
® Every platform is different
- Different configuration methods
- Different terminology
There are solutions!!
m
Only provide one parameter for configuration
» Fully-qualified LU Name
= Network Name
- LU Name
iUSIBMNR.BWDEAN i
nw
am
CS14
All APPN systems must ship seven modes
- User Modes
- #INTER, #BATCH, #INTERSC, #BATCHSC, #CONNECT
-> Other Modes
- SNASVCMG, CPSVCMG
Many LEN implementations implement these modes
Use these modes in your applications
Use these modes in your examples
Don't require application-specific mode names
Don’t require side information in your applications
If you must have side information, your application
should define the side information
Allow for alternate specification of partner LU, server
TP, and mode
- provide TP name and mode defaults
- prompt for fully-qualified LU name
- use NameServer if installed
WBMCDiTWiOBnW
mm
M
Eliminating transaction program definitions
Ship APIMG and GETSENSE with progran
■ Take advantage of TP defaults
- CM/2 can search PATH
- AS/400 searches QUSRLIB
- but be careful about security
► impede access to tile transter program
» allow access to messaging program
» APING separates configuration problems from
your application
■ Provides APPC installation verification
■ Portable C/GPI-G code available for FREE!
■ Runs on many IBM platforms
- OS/400
- AIX “ VM
- CICS - OS/2
_DOS - MVS
■ Shows
- Diagnostic information
- Throughput information
Ship GETSENSE to describe sense codes
» In addition to graphical user interface, platforms may
allow text files for configuration
■ Distribute configuration file fragments with your
applications:
-CM/2: .NDFor .RSP files
-NS/DOS: .NSD files
= SNA Server/6000: profiles to import
- APPC/MVS: provide JCL for TP and side information
definition
- APPC/VM: $SERVER$ NAMES, communications
directories (SCOMDIR NAMES)
w IBM Multi-Platform APPC
^ Configuration Guide
■ Maps an easy-to-use nickname to a fully qualified LU
name
■ Eliminates partner LU definitions for aliasing
a Your application can use ANAME to resolve
nicknames
* LUs can change but the LU nickname remains the
same
~ AM
IBM Multi-Platform
APPC Configuration Guide
n Provides consistent configuration procedures across
IBM platforms
■ Uses standard terms
» Simplifies mapping values across platforms
» Has step-by-step cookbook-like instructions
* Was developed by APPC Market Enablement
■ Is widely distributed
Your customers find their answers there!
Ship the Guide with your applications
a Source is available
- Contact mpconfig@vnet.ibm.com
■ Distribute "as-is" or modify for your application
Minimizes link definitions (to 1)
Eliminates partner LU definitions
Eliminates mode definitions
’•* APPN
Discovery
Before APPN, SNA definition was difficult
- Link information required for EVERY partner
APPN has reduced the required definition
- End Nodes only need address of a Network Node
- Network Nodes only need addresses of other NNs
Discovery makes it even simpler for LANs
- ENs need NO link definitions for APPN service
- Low Entry Networking nodes need NO NN link definitions
Uses LAN 802.2 interface
Uses limited broadcast to Discovery servers to find list
of possible network nodes
Defines and activates a logical link to the best available
network node
Returns the address of the PC’s NameServer
NN
NameServer
I
Potential activities
Support tor a directory - Auto-configuration server
Centralizes CPI-C side nformation administration ■ Standard configuration language
Distributed security ■ Application installation utilities
■Ti
» Eliminate as much configuration definition as
possible
b Don't require new mode definitions
» Don't require CPI-C side information definition
■ Ship APING for configuration verification
« Ship the Multi-Platform APPC ConfiauratiarLQ!
a Make your applications ANAME enabled
APPC Market Enablement
Dept E42 / Bldg 502
P.O. Box 12195
Research Triangle Park, NC 27709 USA
Internet: appcmrkt@vnet.ibm.com
CompuServe: 76711,370
Phone: 1-919-254-4957
Fax: 1-919-254-6050
APPN and new technologies are reducing
configuration
Internet Anonymous FTP Site: networking.raleigh.ibm.
CompuServe Forum: GO APPC
CS15: Using tiha&PPG
Application Nfc&o •
Powerful applications that are widely available
■ Smooth migration from Host-centric to client/server
David T. Lutz
I IBM Corporation
APPC Market Enabternent
Internet: dav©Jutz(§’vn@t.fom.com
IBMMail: USIB5N27 art IE3MMAIL
Phone: (919) 254-4106
■ Transparent configuration of APPC/APPN
WE ARE PROVIDING SOLUTIONS!!!!
Maps an easy-to-use nickname to a fully qualified LU
name
Provides interface for new implications to use ANAME
to resolve nicknames
ANAMELAD allows old applications to use ANAME
nicknames
Where is JBODINE?
ANAME database
* Very simple implementation!
locations
* User supplied destination:
1) try as symbolic destination name
2) try as partner LU name or local alias
3) try as ANAME nickname
* All APPC Applets are ANAME-Enabled
* A FTP - APPC File Transfer Protocol
Command line interface
- identical across platforms
- modelled after industry standards for file tansfer
Fast path ACOPY command
- file transfer with one command
- need to know filename and directory
Full API, with C language support
- other applications can use AFTP to transfer data
*•’ Providing Useful Tools: AFTP
" AFTP JBODINE ■
JBODINE
■ Simple file transfer program
a Excellent performance
» Application programming interface (API)
■ AFTP and ACOPY clients use the AFTP API
■ Connecting machine = client
■ Connected machine = server
■ A FTP = simple
- send and receive files from a partner, perform directory
and file manipulations
■> IBM NetView Distribution Manager, IBM NetView FTP
= full function
- automated transfer, checkpointing and restart, scheduling,
job priorities, server classes
* Smooth Migration to Glient/Server: A3270
b Puts APPC on the workstation Host
(client/server ready)
■> Lets you access and run old host apps
unchanged
b Provides APPN routing for 3270
applications
Program
b Easy to Use
a Object-oriented design
> Extensive type-delining
■ Minimal set ol standard return codes
a Error descriptions can be extracted Irom API
Discovery
How Discovery Works
■ Uses LAN 802.2 interface
■ Uses limited broadcast to Discovery servers to find list
of possible network nodes
■ Defines and activates a logical link to the best
available network node
■ Returns the address of your NameServer
EN: All NNs, identify yourselves.
NN: I'm a NN.
EN: Send me your address.
EN: Send me your address.
NS: Here is my address.
mm mm
Transparent Configuration: Discovery and
T ANAME
Discovery NN
Discovery,APPN NameServer
A NAME,APPN Host
» Discovery finds a Network Node
» ANAME uses Discovery and APPN to find NameServer
- A3270 uses ANAME and APPN to find host
EN
mi
iHii
Availability
b IBM Products
-the applications ship with several IBM products
- ongoing effort to ship with other IBM products
■ Specifications and Source Code
- priced source code offering for AFTP, ANAME and
A3270 (client)
- free specifications
■ Bulletin Boards
* All you needed to know was your own name
and the nickname of your A3270 Host!
* IBM Products
■ OS/2
- CM/2 1.1.1 - supports AFTP and ANAME
■ AIX
- SNA Desktop/6000 for AIX - will support AFTP, ANAME
and A3270 client
- MVS and VM
- VTAM - will support entire APPC Application Suite
mm
Platform Availability
mvs
VM
^S/400
AIX
OS/2 1
)OS
[
ISCOVERY
Yes
Yesl
-
/
NAME/C
Yes2
Yes2
-
/es2
Yes
-
/
NAME/S
Yes2
Yes2
-
7es2
Yes
-
£
FTP
Yes2
Yes2
Yes2
Yes
-
3270/C
-
7es2
-
-
fi
3270/S
Yes2
Yes2
-
-
-
Yes Available: with an IBM Program Product
Yesl Available: from a BBS (OS2BBS,CompuServe)
Yes2 Availble: currently in Beta test
Not currently available
APPC Application Suite in Your Network
Pulling it All Together:
X:X Plug-and-Work
Imagine...
a Your APPC platform arrives in the mail
h You install and start up APPC
- Discovery runs automatically and finds your NN
■ ANAME registers you automatically
■ You logon to your host with A3270
■ You transfer files with AFTP
* All done with easy-to-remember nicknames
* All done without ANY definition except your own
computer's name
Migrating App§m$®m
from HLLAPiiWAPPC
APPC Market Enablement
IBM Networking Systems
Research Triangle Park, NC
Internet: appcmrkt@vnet.ibm.com
Phone: 919-254-4857
n Introduction of HLLAPI concepts
■ HLLAPI limitations in client/server applications
» How APPC addresses HLLAPI limitations
■ Comparison of HLLAPI and APPC programming calls
o Steps required to start migrating HLLAPI applications to APPC
» New considerations with APPC after HLLAPI
Definitions
HLLAPI - High Level Language Application
Programming Interface
- allows workstation program to interact with host through
3270 and 5250 terminal emulation
- workstation program acts as a "programmed operator"
APPC - Advanced Program-to-Program
Communications (LU 6.2)
- enables high speed communications between programs on
different computers
- application programs communicate as peers
What is HLLAPB?
■ The API for access to 3270 and 5250 data
streams
■ Workstations access data via
"presentation space"
S: ' The HLLAPi Interface
■ Lets you write a program to
- Simulate keystrokes
- Extract data from presentation space
- Place data into presentation space
■ Programs don’t communicate directly
■ Most calls have nothing to do with communications
- SET CURSOR - position cursor on "screen"
^ History of HLLAPI
* No NetBIOS, APPC, or TCP/IP
■ Lots of "dumb" terminals
■ Mostly host-based application development
■ Few LANs
■ No downsizing or rightsizing
■ No client/server
■ 3270 emulation was prevalent method for PC to
communicate with a host application
■ HLLAPI was the only game in town
What HLLAPI Applications D©
HLLAPI Limitations in Client/Server
Extend the life of host applications
■ Simplify user interface
- Add a GUI front-end on the workstation
- Provide more extensive HELP text
“Translate cryptic application messages
- Reduce user training
■ Front-end multiple host applications
- Use multiple mainframe applications for a request
- Emulate single sign-on
b Developed with no host programming required
■ Poor error reporting
■ Host application dependent
■ Indirect Communications
■ Server must be on host
■ Lots of network flows
■ Logon and application security is difficult
■ Host time-outs cause problems
■ Duplication of processing
■ Resetting host application after requests
APPC designed for direct communication
- ' ::X APPC provides connectivity
a APPC was specifically designed for Client/Server
computing
<C» a) 110*1 d* ter Wl
mm
mm
Efficient data exchange
■ APPC is not screen oriented
- screen negotiation code is not required
- no screens to acknowledge
■ APPC provides efficient data transfer
- a complete request can be sent as a single record, not as a
series of screens
- sends just the data required
- message size not restricted by screen size
- allows many different types of data
APPC Strengths in Client/Server
a Robust error reporting
■ Partner application independent
■ Peer-to-Peer Communications
■ Flexible downsizing scenarios
■ Optimized for network performance
b Security built into protocol
> Host time-outs not a factor
■ Processing distributed among partners
s Orderly conversation termination
v A Typical HLLAPS "Conversation"
v A Typical APPG Conversation
0 Log onto the CICS address space
■ Log onto the CICS application
■ To process a request
- Find correct screen(s) in application
- Position cursor
- Put user input into correct screen positions
- Send ENTER key
- Look for response screen
- Extract data elements from screen for GUI
- Reposition host application
(OBM Barroom TCM
mm
■ Client side
- Set conversation characteristics
- Build logical record(s)
- Begin conversation
- Send logical record(s)
- Receive logical record(s)
- Extract data for GUI
- End conversation
■» Server side
- Accept conversation
- Receive logical record(s)
- Build logical record(s)
- Send logical record(s)
- End process
'*■ Starting a "Conversation": HLLAPi
■ Obtain access to presentation space
- CONNECT PRESENTATION SPACE
-SET SESSION PARMS
■ Log on user
- SEND KEY (TAB) or CURSOR
- COPY STRING TO PRESENTATION SPACE (user ID)
-SEND KEY (TAB)
- COPY STRING TO PRESENTATION SPACE (password)
-SEND KEY (ENTER)
- WAIT or PAUSE
-SEARCH PRESENTATION SPACE
■ Get host application to correct screen
- COPY STRING TO PRESENTATION SPACE
- SEND KEY (ENTER)
-SEARCH PRESENTATION SPACE
Starting a Conversation: GPS-C
' Client "
■ Start the conversation
- Initialize conversation (CM IN IT)
■ Set conversation characteristics
- Symbolic destination name
- SET calls
Set_Sync_Level (CMSSL)
■ Establish a conversation
- Allocate conversation (CMALLC)
Server
■ Acknowledge the conversation
- Accept conversation (CMACCP) _
o Send and receive screens
b May need to traverse multiple application screens to fulfill a
single user request
- Program is in "guessing" state between screens
> Atypical sequence
- COPY STRING TO PRESENTATION SPACE
- SEND KEY
y^ppQ -WAIT or PAUSE
- SEARCH PRESENTATION SPACE
- COPY PRESENTATION SPACE TO STRING
i Send and receive logical records
. Only send specific data needed to process request
» Atypical sequence
- Client
- Build logical record
► Send record (CMSEND )
► Receive record (CMRCV)
- Server
» Receive record (CMRCV)
► Send record (CMSEND)
. Time-out from WAIT but XCLOCK or XSYSTEM still on screen
-Cause ,_
► Host operating system problem
► Network slowdown
► Host application problem
- Resolution
. Reissue WAIT and try again
► Prompt user for action
a Unsuccesstul SEARCH PRESENTATION SPACE
- Cause
► Presentation space not fully refreshed
► Unable 1o recognize screen
► Unable to find screen element
► Partner abend
- Resolution
► Search again
» Try known key combinations
More Error Handling: HLLAPI
■ Host messages from application or system
- Cause
* Application error message
► System notification
- Resolution
► Pass message to application user
■ Failure attempting to send KEY to host
- Cause
► Host problems
■> Communication problems
- Resolution
■> None
► Inlorm user
(C* BM Qujnnttin ItW ’ ’ ’ ’ ’ '
Error Handling: CP!-C
* Full diagnostic information from APPC
■ Two types of error conditions:
- Network errors
- Application errors
■ Resolution
- Check return codes
- Retry call
- Retry conversation
- Notify partner program
- Participate in network or application recovery
- Log error information
v Migrating HLLAPI to APPC
Steps
« Examine current functions
■ Design logical records
« Design conversations
■ Design error handling
■ Evaluate security requirements
n Build client AND server(s)
■ Functions may be artificially split due to HLLAPI
- Too slow to combine
-Too difficult to navigate host application
■ Consider combining functions
■ Look at data requirements for each function
a Remove HLLAPI code
- Smaller workstation programs
■ Decide which functions belong on which platform
tC) CGTJUBCtBn '
a Work with current user interface
- Input and output data elements
■ Examine logical application tasks
- What is user requesting?
- What data is sent and received?
■ Identify tasks required for application
- Inquiry, Update, Browse
a Shift error handling from screens to records
- Design error codes or fielcs into the logical records
b Determine the flow of logical records
- What/when to send
- What/when to receive
■ Look for opportunities to combine requests
- Don't design conversations based upon host screens
■ Include recovery and resynchronization
- Now you have an opportunity to use these features
t Application now has complete control
- Use return codes and stsitus indicators
- Easy to program for erro - conditions
- Use logical records for ajDplication errors
- Use SEND_ERROR feature of APPC
b Programs must inform partner of processing errors
- Design error conversation flows
Use security provided by APPC
- No "signing on" required
. Migrate application-specific security to the workstation
. Eliminate multiple user IDs and passwords
» Consider Password Expiration Management (PEM) in
CICS 3.3 and MVS 4.3
- Can change passwords with APPC conversation
Decide who will initiate application recovery
- Client or server
'S
Build Generic Servers
■ Unlike HLLAPI, new server programming is usually required
■ Servers are easy to build
- No user interaction
- Processing as background task
■ Still sending and receiving
- Data instead of screens
■ Build generic servers
- Easy with logical records
- Reusable host modules
■ Smaller programs on host
Whafs a generic server?
■ Separate APPC code from application specific code
- Allows APPC code to be changed without impacting
application
- Easy to port existing 3270 Programs
- APPC server invokes application processes
Two-sided conversations
Data conversion
- APPC carries data in any format, including mixed
- No automatic conversion of ASCII to EBCDIC and vice versa
- Must handle binary and packed decimal data formats
Application recovery
- Resending data
- Synchronization and confirmation
New configuration requirements for distributed network
Network recovery
- Reactivate connection
- Know when to perform
Error information
~ No more "guessing"
a Smaller workstation programs
b Smaller host programs
■ More reliable workstation applications
» Better utilization ot network resources
■ Less maintenance due to elimination of HLLAPI
b Positioned to take advantage of downsizing
o Eliminate bond between host and workstation
application
Where to go next
» Helpful papers
- APPC or HLLAPl: Decision Criteria
APPC Application Design for HLLAPl and 3270
Programmers
- CiCS 3270 to APPC Client/S&rv&r: A Migration
Metinodoiogy
- Cii&nt/Server Computing with APPC and FEP(
* More questions?
APPC Market Enablement
Dept. EA6/Bldg. 502
P.O. Box 12195
Research Triangle Park, NC 27709
VM: APPCMRKT at RALVM6
Internet: appcmrkt@vnet.ibm.com
CompuServe: 76711,370 IGO APPC
Phone: 1-919-254-4957
Fax: 1-919-254-6050
Where to go for more information
■ Recommended IBM references
- CPI-C Reference (SC26-4399) for programmers
- Best of APPC, APPN, and CPI-C CD/ROM (SK2T-2013)
. APPC/APPN Technical Conference '94
- Amsterdam, September 26-30
a APPC Connection newsletter
» CompuServe - GO APPC
. OS2BBS on 1BMLINK - APPC forum
■ FTP site on Internet
- Anonymous ftp to networking.raleigh.ibm.com
(192.35.236.4) and look in /pub/appc_appn
►Clay Boyd-
IBM
Internal Zip 3107
11400 Bumet Road
Austin, TX 78758
An introduction to DCE
{m 2) - 823-2762
V$ICLAYB at AUSVM1
clayb@vnet.ibm .com
Clay Boyd
Austin, TX
What is the OSF7
Presentation Outline
► Origin of Open Software Foundation --
Cambridge, MA1989
► Purpose ■ Encourage development ot an open,
multi vendor environment
► DCE is )ust one part
► Members;
-NCS
► DCE Goals
► DCE Features
► DCE Functions
► DCE Celt Concept
► DCE Benefits
► IBM and OSF DCE Plans
► Create a Single System Image
-Heterogeneous Systems
- Transparent
► Make Distributed Systems EASY
- for Users
- for Developers
- for Administrator
► High Availability and good performance
► Industry Standards
DCE Features - Administrator
^ : ^ ■ v ■■ ■ / vi : ' :
: :>• . : :. •:
DCE Features - Developer
► Distributed File System
► Network independent communications API’s
Management
► Security is simple and built in.
- User/group/account
► integrated Name space
- ACL’s - Access Control Lists
► Client/Server Paradigm easy to use
Qtr±*3r*ct.
► Heterogeneous machines, single source cod©
- Distributed Time
► Parallel ism Easy
j ■: ;; >r.
i
- Server threads
- Client threads
DCE Functions
Threads
- Threads
► Uses OS/2 kernel level threads
-RPC
► Multiple execution flow in the same process
- CDS - Cell Directory Service - Names
- Easy communications between threads
-Security
- Cheaper than processes
- Time Service
- DFS- Distributed File Service
What is a Thread?
eaocess
Single-threaded process
time
PROCESS
M ulii-threaded process
Remote Procedure Calls * RPC :
► Proven means of distributing application
execution
► Masks network complexity
► Uses familiar programming paradigm
► Integrated with other BCE components
Local and Remote Procedures
Cltent
- RPC Interface -
>
CftentStubs
Network
Server Stubs
Server
: :■ .
: . . ■' ' ■ ■ ■■
Cell Directory Service - CDS
Ceil Directory Service - CDS
► Comprehensive Directory Service
► Origin
► Integrated with RPC’s and with Security
- DEC’S DECdns for CDS
► Replicated 1 Databases
- Semen’s' DIR-X for GD5
- One Master, many Read Only copies
► Standards
- Updates by skulking
- CCITT X.500/1SO 9594 Directory Service
- Can make a Read Only copy into the Master
- Internet DNS
► Backup/Restore methods
- X/Open Directory Service API
j
CDS Naming Conventions
► Global Names
"/.../<cell_name>/<dir_name>/<obLname>"
"/.../clayscell/hosts/ciayb"
"/.../Mandlebrot/fs/u/clay"
► Local Names
7.:/hosts/elayb"
7.:/fs/u/clay"
► Local File System
7:/u/clay"
i, : ■ :: > ^ ^ : . vrVix-:?;.'.- ■■ • .
j: ; . •. ; 7 • •:'. : ,! " y >. ''; •• ^ x 7 777'7; : :> x: \ x Yx,. 7
DCE Security
► Used by other DCE services for secure
environment
► integrated with RPC
► Origin: Kerberos from MIT w/ enhancements
from HP
► Standards: Kerberos (emerging), POSIX 1003.6
ACL authorization, DES encryption
Kerberos Security
Kerberos Security
-Jack and Jane now
share a new pw, "npw 1
Security Functionality
► Authentication of identities (private keys)
► Authorization checking (ACLs)
► Date integrity verification (checksum)
► Data Privacy (encryption)
DCE Time Service
► Ensures clocks closely match standardized time
► Integrated with other DCE components
► Precise, fault tolerant clock synchronization
► Origin: DEC'S Distributed Time Synchronization
Service (DECdts)
* Standards: interoperable with Internet NTP
DtS Architecture
tITC Time Provider
i
: Time Provider Interface:
Server # Clerk
: V : DTS Votes... :: :V
host 1
& "y! 4:59:40+/- 6
host 2 ;
U..; 4:59:42+/- 20
' host 3
: 4:59:56 +/- 16
i i •* • • •:•*• * ...
Result
HH 4:59:43 +/- 3
4:59:20
> • • . -i I
4:59:40 5:00:00 5:00:20
■ Tf:, : :.;i, ■■■ r : :V+ + :: . v
' 'I.:,' T- T - 1 f- : rm I '
4:59:30 4:59:50 5:00:10 5:00:30
DFS - Distributed File Service
► Extends local file system model to the network
► Allows transparent access to remote files
► Integrated with other DCE components
► High Speed and Availability
► Oriain: Transarc's Andrew Fite System IAF&\
DFS File Server
► TWo types of file systems
- Local File System (LFS) (Episode)
- other file systems, NFS, Unix, etc.
► LFS is an advanced file system
-high performance
- log-based
-fast restarting
- High Availability
- Strong Security
- Backup and Restore
111
Directory
Service
Time
Service
Security
Service
Remote Procedure Call (RPC)
Threads Service
Operating System
||i;||§||§
i Distributed Applies
ation |i
IBM and QSF DCE Plans
What we do,
► We teach OS/2 DCE courses for:
-Applications Programming Interface
- System Administration
► Our courses are:
- Hands-on, You will write DCE client/server
applications in the course
- Over 50% lab exercises
- Include example programs for most DCE
functions
► We teach in Austin, Texas or at your site
OS/400
Windows
CS20
My name Is...
► Clay Boyd
The DCE Application Programming
IBM
Internal Zip 3107
Interlace
11400 Burnet Road
Austin, Tx 78758
(512) - 823-2762
Clay Boyd
V$ICLAYB at AUSVM1
Austin, TX
I \ • •••'
| ' ; . . ^ .'i:;/: V* V;; > V ; C : - ‘Xv V
clayb@vnet.ibm .com
Presentation Outline
What is the OSF?
► DCE Goals
► Origin of Open Software Foundation -
► DCE RPC
Cambridge, MA1989
► DCE Namespace API
► Purpose - Encourage development of an open,
► DCE Security API
muitivendor environment
► DCE is just one part
► Members:
~NCS
-IBM
-DIGITAL
-HP
I -Transarc
1 ■ V !
► Create a Single System Image
- Heterogeneous Systems
- Transparent
► Make Distributed Systems EASY
- for Users
- for Developers
-for Administrator
► High Availability and good performance
► Industry Standards
NETWORK
► Universal Unique identifier
► 128-bit part number scheme - identify DCE
objects
- Principals (eg. users)
- Server interfaces
-Everything..,
► 0FE3973C-2FC5-11C A- BFB5-68QQ2 B1BB4F5
DOE Client
DCE Server
Remote Procedure Galls * RPC
► Proven means of distributing application
execution
► Masks network complexity
► Uses familiar programming paradigm
► Integrated with other DGE components
Remote Procedures
[uuid(0cf616d8-b858-11 c9-8078-026G8c0aO3a7) > version(1.0) ]
interface Math
► Origin: Apgllo/HP NCS
► Defined for both Client and Server
► Interface Definition Language
~ Interface Spec
► Interface UU ID
► Interface Version Number
-interface name
- Operation definitions
- Creates the Client and Server stubs
automatically
Example - Server Program
Example - Client Program
Exam pie - Remote Procedures
• RPC Interface -
Client Stubs
Client
Network
Client/server Communications
► What’s required for a client process to
communicate with a server process?
- Client must find Server host machine
- Client must find comm port number Server
process is listening to
- Server must be listening!
- Client sends a message to Server process
- Server process handles Client request
- Server returns message to Client process
Cell Directory Service - CDS
► Comprehensive Directory Service
► Integrated with RPCs and with Security
► Origin
- DECS DECdns for CDS
- Siemens’ DIR-X for GDS
► Standards
- CCITT X.500/ISD 9594 Directory Service,
Internet DNS, X/Open Directory Service API
CPS Naming Conventions
Global Names
7.../<celLname>/<dir_name>/<obj_name>"
7. ../clays_cell/hosts/clayb"
"/... /Mand lebrot/fs/u/clay"
Local Names
7. :/hosts/clayb"
7. :/fs/u/clay"
Local File System
7:/u/clay"
Cfient/Server RPC call
Client process talks
directly with Server
process as it makes
its RPC calls....
Client/server Communications
'► that's required fer a client process to
communicate with a server process?
- Client must find Server host machine
-Client must find comm port number Server
process is listening to
-Server must be listening!
- Client sends a message to Server process
-Server process handles Client request
-Server returns message to Client process
GSient/Server RPC call
Server Process advertises in the CDS
Namespace
hosts
fblll!
7. -/server", ifspec, host2
Glient/Server RPC eats
► What's required for a client process to
communicate with a server process?
- Client must find Server host machine
- Client must find comm port number Server
process is listening to
-Server must be listening!
- Client sends a message to Server process
- Server process handles Client request
■ - Server returns message to Client process
Client/Server RPC caH
just LISTENS to
the communications
rvirt w/aitinn for a
Client/Server RPC ca!
Client process get the
Server process's host
machine name from
the CDS Namespace.
host2
Client process talks
directly with Server
process as it makes
its RPC calls....
Client process gets
the Server process's
port number from the
EndPoint Mapper...
Client/server RPC cast
Client/Server RPC call
► I- Server registers with EndPoint Mapper
► 2- Server registers with CDS Namespace
- Server Listens on Communications port
► 3- Client gets Server host name from CDS
►4- Client gets Port Number from EndPoint
Mapper
► 5- Client process sends RPC information to
Server process
DCE Security
DCE Security
« Authentication
► Used by other DCE services for secure
1 ^ ^ 9 Authorization
environment
| | ij « Applied consistently across
► Integrated with RPCs
► Origin: Kerberos from MIT w/ enhancements
from HP
► Standards: Kerberos (emerging), POSIX 1003.6
i \
ACL authorization, DES encryption
/ j X
•
: . '■ ’ .
i , ' •' * ' - ■'■■■ ;*-7 ' '* -X?
|.. v . . . .. . xyxx.. i./fyX. >' . x-. ;
1
i ' ’ .-.®. r} : . ' v ..■-
j
Security Functionality
► Authentication of identities (private keys)
► Authorization checking (ACLs)
► Date integrity Verification (checksum)
► Data Privacy (encryption)
Secure RPC Calls
► How can a Client process make a Secure RPC
call to a Server process?
- User logs in, starts the client process
- Client process tells RPC runtime the type of
Security desired
- Client makes a normal RPC call
- Server wakes up and receives cal
- Server process gets Client Identity
- Server process checks Client's access
permissions via CDS object ACL
Privilege Attribute Certificate
► Users Principal name and list of groups
► Created by Security DataBase Server
► Encrypted in the Server Process's Name
PAG from clay
to addServer
PAG
clay
instructor
dept617
austin contractor
What we do...
We teach DCE courses for:
-Applications Programming Interface
- System Administration
Our courses are:
- Hands-on, You will write DCE client/server
applications in the course
~ Over 50% lab exercises
- include example programs for most DCE
functions
The DCE Application Programming
Interface
Clay Boyd
Austin, TX
► Universal Unique Identifier
► 128-bit part number scheme - Identify DCE
objects
- Principals (eg. users )
«* interfaces
- Everything...
► 0FE3973C-2FC5-11C A- BFB5-68QQ2 B1BB4F5
Remote Procedures
Client Stubs
Example - Server Program
return ( a * to )
}
Exampte - Client Program
#irtcluete "add.h
main()
o = rnutt(. : c, 4 ); /* second rpc call */
Compiling and Linking
• • i
^ f ', A
lliilill
iiiiiiiiill
COS & Security Server Configuration
Where .should DCE servers go?
install CDS & Security servers on different
•machines •
What type of machines shoufd run DCE servers?
Should the CDS Namespace be distributed?:
Replicate servers '--where appropriate
How many DTS servers are needed?
CDS namespace isasuaSly not distributed.
Will the cell use X.5O0 or DNS names?
Will the ceil communicate with other cells via
X.5Q0?
DTS Configuration
DFS Configuration
Run FT servers on big and fast machines
server:
♦ Minimum 3 servers per cell. (10 total)
♦ WANs require global and courier servers
♦ Each server must be put into correct LAN-proflle
♦ Gan also have servers sync with NTR
Global Warning Configuration
♦ Communication to other ceils requires GDA for
RPC Administration (cont)
Primary tool: rpccp
► Interactive or command tine
Typically used to :
► Display CDS namespace entries
* Display RPC endpoint mappings
► Remove RPC endpoint mappings
RPC Administration
►'Primary Tools: rgy-edii, achsdit, sec-admin
- Interactive or command line
> Prfrnary Tasks:
- Creating/Viewing/Removing principals (*gy-edit)
■ ► Includes users and application servers
Adding principals to groups/organizafions (rgy-edit)
Modifying properties at principals/cetl (rgy-edit)
■»-Acct expiration date
■ Default ticket lifetimes
- Viewing Modify teg ACLs on DOE and application entities (acted it)
- Manipulating security replicas (sec-admin}
- Maintaining Registry DB
► Checkpointing to disk (sec-admin)
* Backup/Restore
CDS Administration (coot) _
► Primary Tools: cdscp,cdsli, cdsdet
* Primary Tasks:
- Listing contents of CDS namespace (cdscp/cdsli)
~ Showing CDS namespace entities attributes
(cdsep)
- Creating/Deleting entities for application servers
{cdscp/cdsdel)
- Apps populate entity with app info
I - Creating replicas for higher availability (cdscp)
- Changing master/read only replicas (cdscp)
►Outages,maintenance,etc. ;
-Maintaining CDS DB
■ ► Checkpointing to disk (cdsd_diag)
► Backup/Restore
CDS Administration
What towers are on...?
ur server machine is going
down for maintenance.
Wonder what the
'd better creaie a
replica of this
{flrectory since
It’s being used
so much. __
looks like now?
Can you create me a
rectory for my server's
bindings? .
Hey, you can get rid of
that object you created
for me.
IBM and OSF DCS Plans
DFS Administration
Geez, this aggregate is
getting full. Better set up
I can't write to the server
anymore.
Primary Tool: scout, fts, back
Primary Tasks:
♦ Monitoring filesets/aggregates (scout)
* Chocking u sage vs. quotas
♦ Creating new filesets (fts)
♦ Ftieset backup
* Online clone (fts)
* Tape backup (back)
► We teach OS/2 DCE courses for:
- Applications Programming Interface
- System Administration
► Our courses are:
- Hands-on, You will write DCE client/server
applications in the course
CS23
Choosing DCE as Your
Client/Server Programming
Environment
( 8 / 04 / 94 )
Kim Wiikens
LAN Systems ISV Relations
Austin, TX
Si LAN Systems™
What is DCE?
W
%
\
%
sj>>
$
co
Jp'e
/
H3\®'
/
\>s ©
E
x
CD
%
vts
S\S
£
A#
HU LAN Systems^
Today's Agenda
► What is DCE?
► How could DCE fit into your organization?
> Latest word on tools and products
*> Latest word on customers
a* \Mbi\i ie 1 tori tn HOF
" .....
> How to get started with DCE?
WM LAN Systems "
DCE is Plumbing
MI LAN Systems
DCE Goals
&> Create a Single System image
- Heterogeneous Systems
“Transparent
► Make Distributed Systems EASY
“for Users
-for Developers
“for Administrators
► High Availability and Good Performance
► industry Standards
HIM LAN Systems
Marketplace swings over the past decade
DCE Architecture
DCE
DM
Sizing: Up, Down and Right
Transaction processing
Data Access
Robust platform
The New Information Environment
Why should you write DCE-enabled apps?
TO SAVE
Why would you get DCE?
IBM OS/2 - first run-time client on Intel & SDK
IBM Windows - run-time client & SDK
IBM AIX - leadership DCE offerings w/first availability of DFS, GDS &
IBM VM/MVS- EC IP program now, run-time client 4094
IBM 08400 - SDK 3094
Sun Solaris UNIX - RPC, threads, CDS & DTS
HP/9000 HPUX - full function support including DFS, GDS & Encina
DEC OSF/1 - DCE base services & security server
DEC Ultrix - RPC. threads, CDS & DTS
OpenVMSVAX " client support
■ Novell - anticipated DCE gateway support to Netware NDS, UnixWare &
backend support with Appware directory services
• Microsoft “ proprietary RPC with Windows, NT supportioimjpEC
N Systems "
■ App deveSopment tooSs
-Ellery Systems, KnowledgeWare, MicroFocus, NobleNet,
Open Environment Corp, Seer Technologies, Template
Software, Uniface Corp.
■ System management & security
-Computer Associates, Enigma Logic, HaL Computer,
Mergent International, Pinnacle Technology.
“Database and communication
-ASK Group, Oracle Corp, Sybase.
a VerticaS and horizontal apps
-Atrium, Integral, Lotus, Open Systems Associates.
* And many more ...
DCE Administration Tools
HAL Computer Systems - Cell Manager
Cell Directory
Security
Time
RPC Endpoints
Application
Management
• platforms: AIX/6000 Beta, other Unix
• target: cell administration
• graphical view/modification of DCE cell resources
• productivity over command driven admin
• DCE application server management
Open Environment Corporation (OEC) - Encompass
3 tier client/server architecture
rapid design, prototype, delivery
DCE standards-base foundation
strong integration of GUI, RDBMS tools HM LAN Systems
Available Today or Becoming Available...
• OS/2 and Windows Integration Tools
• Mainframe Integration Tools
• Other Programming Languages
• Application Development, Test, Debugging Tools
• Performance Tools
HIM LAN Systems
DCE Products
Atrium Technologies - Dazel
Source Drag & Drop Client Destinations
Documents GUI
Printing, Information Delivery
• AIX, Unix clients/servers, Windows client
Latest Word on Users
■ Associated Grocers
- moved electronic ordering system 'top down' with DCE
and OEC tools
■ Charles Schwab & Co
- initiated first DCE cell and roll out plans for thousands of
users
■ Earth Data Systems
-newdeforestation monitoring program based on DCE
using Ellery Open Systems software
■ BeSS Sygma
-early OS/2 DCE beta program participant with successsful
prototype and plans to rollout
■ And Many More
- Amoco, Lehman Brothers, Tokio Marine & Fire
Insurance, Bellcore, Citibank...
OK LAN Systems'^
DCE Products
Oracle Corporation - DCE Adapter
Client Server
• AIX, Unix clients/servers
• rpc interface, also existing Oracle APIs preserved
• DCE directory & security integration
• Beta underway today IMM LAN Systems
Transportation Company
• heterogeneous network
• reliance on directory services
• national IMS database HI
Local Office
Client
MVS Host
IMS Data
Why is IBM committed to DCE?
DCE Customer Examples
Manufacturing Company
Branch Office Regional
Sites/ Centers
Office
Server
App'ns—
Oracle
Oracle
—Forms-
Database
Corporate
Head qua ters
I MVS Host
IMS Data
Oracle
Database
Distributed Print - Atrium Dazel
Distributed File System
AIX regional servers
Windows & AIX application clients
Oracle Forms & PC apps
DFS for binaries, file data
TCP/IP Network
central/regional admin
Open Blueprint
I
Applications
and
Application
Enabling
Services
Distributed
Systems
Services
Network
Services
E3M LAN Systems™
Subnetworking
Where Does DCE Fit?
Why did IBM use DCE?
TO SAVE
KM LA N Systems
DCE in the LAN System
Host
DCE
- MVS
- VM
- OS/400
- Notes
-acs-os?
-acs/6000
MM LAN Systems*
DCE is DSOM’s plumbing
Client
application
Proxy object
%
Hide
complexity
Server object
- Extended SOM with full COR BA model
-Transparent distributed computing
facilities via sockets, DCE, ...
MM LAN Systems
IBM LAN Systems Performance
Austin, Texas
Copyrights and Trademarks
DCE for OS/2
Base Performance
PSP Technical Interchange
- Atlanta, 11 Sep 1994
- Berlin, 19 Sep 1994
Tim Li 512-838-0449
Bob Russell 512-838-0844
Ray Pekowski 512-838-8164
11400 Burnet Rd
Austin, Texas 78758
a Copyright 1994, IBM Corporation
* IBM, AIX, OS/2 and RISC/6000 are registered trademarks of
International Business Machines Corporation.
■ Microsoft is a registered trademark of Microsoft Corporation.
■ Windows is a trademark of Microsoft Corporation.
- OSF is a trademark of the Open Software Foundation, Inc.
■ LAN Workplace is a registered trademark of Novell
Corporation.
a PC/TCP is a registered trademark of FTP Software, Inc.
0 3COM is a registered trademark of 3COM.
AGENDA
Introduction
-> Introduction
■ Performance of Core DCE Functions
0 Performance of Multiuser Applications
« Performance of DCE for Windows
a Summary
a General Approach for Performance Analysis
- Benchmark Measurement
- Sensitivity Studies
■ Base System Configurations
- DCE Server: IBM PS/2 Mod. 95 (33 MHz 486)
- DCE Client: IBM PS/2 Mod. 80 (25 MHz 386)
- IBM Token Ring running at 16 Mbps
- IBM OS/2 2.1
- IBM DCE Software Developer's Kit for OS/2,
Version 1 (Based on OSF DCE 1.0.2)
Introduction - DCE Architecture
AGENDA
Applications
DCE Threads
Operating System and Transport Services
Introduction
Performance of Core DCE Functions
Performance of Multiuser Applications
Performance of DCE for Windows
Summary
CS24
CS24
« Natural extension of Local Procedure Call
« Shield underlying networking technology
- Mask difference in data representation
- Used by other components
= High frequency usage
- Protocols supported
- UDP
- TCP
® Benchmark
- Variable length array
- Pipe
RPC vs TCP/IP Sockets (UDP)
%tes Transferod
RPC/UDP - Blocked Arrays vs Pipes
RPC Performance - UDP vs TCP
RPC vs TCP/IP Sockets (TCP)
RPC/UDP Machine Speed Sensitivity
RPC/UDP with Security
Tips for RPC Performance _
h Performance varies by
- Size of data transfer
- Transport
- Pipes vs array
- Security level
- Hardware
. Use TCP for < 2 KB data, UDP for >2 KB data
Q Use UDP for varying amounts of data
B Use pipes if overlapping is possible
e Use security level properly
Ceil Directory Services (CDS)_
. Look up and manage names of resources in a cell
e Hierarchical name space
b Respond to name space requests from clients
b Caching allows fast data access
■ Benchmark
- Based on CDS Control Program (CDSCP)
- Selected commands measured
CDS Control Program Base Commands
CDS Control Program SHOW Command
ELAPSED TIME (SEQ
NO. OP OBJECTS OR DW cCTORHtS
Security Services ____
. Enable client/server to prove their identity
- Offer integrity and privacy of communications
b Control access to resources
- Maintain its own namespace
B Benchmark
- DCELOGIN
- RGY_EDIT - edit the registry database
- ACL_EDIT - manage access control list for name space
objects
CS24
Key Functions of Security Services
Common RGY_EDIT Operations
Tips for Other Services
AGENDA
. CDS
- Set CDSCP CONFIDENCE to low for repetitive data
■- Client could take up large portion of elapsed time
■ Security
- Use PE_SITE, (set BIND_PE_SITE <>0)
- Client could take up large portion of elapsed time
- Threads
- Use OS/2 threads for performance
- Use DCE threads for portability
Introduction
Performance
Performance
Performance
Summary
of
of
of
Core DCE Functions
Multiuser Applications
DCE for Windows
Environment Base Configuration
Multiuser Benchmark - RPC Data Transfer
- Server: PS/2 Mod. 95, 33 MFIz
- DCE Cell Services
- POS Application Server
- DBM Server
■ Clients: PS/2 Mod. 57, 20 MHz
- CPU intensive
■ Based on existing RPC sample program
■ Data transfer - Variable-length array 1 to 8192 bytes
■ 1 terminal submits 1 data transfer every 10 seconds
CS24
RPC Data Transfer - UDP vs TCP
Multiuser Benchmark - Database OLTP
d
8
a
Q)
Q_
Ta
Q
o Based on an OS/2 ES 1.0 DBM OLTP benchmark
- A banking application with SQL statements
- 1 terminal submits 1 transaction every 10 seconds
a Comparisons between
- DCE RPC
- DBM Application Remote Interface (DARI)
DBM OLTP - Response time Pro ration
125
Response
Seconds
0.8 _.
0.4
0.2
OS/2 Database Manager
25 50 75 100
Client Workload
0.6
Database OLTP - DARI vs RPC
Multiuser Benchmark - Point of Sale (POS)
Point of Sale Benchmark
- Response Time Proration
. Based on a retail application
& Average sale - 5.5 authenticated RPC transactions
- Select a catalog page - 16 KB bit image
- Select 1 to 4 items - 168 byte data returned per item
- Get customer information record - 512 bytes
- Send all data to the back room repository
- 1 terminal submits 1 sale in 1 minute
0.5
0.4
C/D
"O
o 0.3
$
0
0 50 100 150 200 250
Client Workload
CS24
Point of Sale Benchmark with MPTS Tuning
- Reduced RAM
■= cluster @ 4 KB 250 -
MPTS 'mbuf Tuning
- mfoufs @ 256 B
Tuned
- saving - 448 KB 200 -
clusrers=64
mbufs=512
» Improved g
jy
Performance 0 150 -
Default
£ 100 -
Jp clusters=M4
o>
Z3
O —
Jp mbufs=l 024
^ 50 -
/
0 _
1 1 1 1 1 1 1 l 1 |
0 50 100 150 200 250
Client Workload
Observations on Multiuser Applica tion
* Results are consistent with single client performance
■ Queueing characteristics are well-behaved
- The DCE proration of the elapsed time is small for the cases
measured
■ RPC as a DBM transport compares favorably with DBM DARI
using NetBios
B MPTS MBUFS tuning may improve performance and RAM
requirement
AGENDA
a Introduction
■ Performance of Core DCE Functions
Performance of Multiuser Applications
Performance of DCE for Windows
■ Summary
Measurement Environment
- Windows DCE client
- IBM DOS 5.0, Microsoft Windows 3.1
- IBM DCE Client for Windows Version 1.0 (Based on OSF
DCE 1.0.1)
- One of the TCP/IP transports
► Novell LAN Work Place for DOS Version 4.1
► 3Com TCP with Demand Protocol Architecture, Version
2.0 with LSP 1.31 Token Ring Driver
► FTP PC/TCP for DOS Version 2.11 with the IBM LSP 1.31
Token Ring Driver
= OS/2 DCE Server
RPC - UDP vs TCP ____ RPC with 2 Security Binding Options
Novell Transport n NoveSI Transport
Server: DCE for B TCP Protocol
fetes Trtreftrtfl
RPC with Daemons
RPC with Different TCP/IP Transport
* UDP Protocol
a Security Binding
Using PE_S!TE
B Server: DCE for
OS/2
» Client: DCE for
Windows
- Novell Transport
0 TCP Protocol
. Security Binding -
using PE_S!TE
B Server: DCE for
OS/2
» Client: DCE for
Windows
No ol Daemons
H-1-1-1-1-1-i-1-1-1-1
0 IKS 2SS SSB SBS KB& 7SS 6039 S3® KB5S
Bjfcs Tresfe-si
RPC with Security
- Novell Transport
■ TCP Protocol
. Security Binding -
using PE_SITE
» Server: DCE for
OS/2
® Client: DCE for
Windows
£
Prototype of 8 KB RPC with Security
a Novell Transport
» TCP Protocol
- Security Binding -
using PE_SITE
» Server: DCE for
OS/2
B Client: DCE for
Windows
Prototype for RPC
» Novell Transport
® TCP Protocol
» Security Binding -
using PE_SITE
« Server: DCE for
OS/2
Client: DCE for
Windows
ELAPSED TIME (MS)
BYTES TRANSFERED (In TDousintfc)
DCE LOGIN
AGENDA
Tips on DCE for Windows Performance
■ Use TCP in stead of UDP if possible
■ Avoid using packet integrity and packet privacy level of
security if possible
a Choose transport product with better performance
D Avoid starting DCE daemons if not required
= Set Security Binding option to use the PE_SITE file if
appropriate
Introduction
Performance of Core DCE Functions
Performance of Multiuser Applications
Performance of DCE for Windows
Summary
Summary ... Factors Affect Performance
■ Hardware
- Processor speed
- RAM size
- I/O speed
« Transport protocol & its implementation
a Size of data transfer
- BIND_PE_SITE
■ Level of security
■ Caching
Application Design
The Sources
■ "Performance of Key Functions in DCE for OS/2" by Cindy
Corn, Tim Li, Ray Pekowski and Bob Santeford, IBM Personal
Systems Technical Solutions, Jan/Feb 1994
» "IBM DCE for OS/2 Multiuser Application Performance" by
Benetta Perry and Bob Russell, IBM Personal Systems
Technical Solutions, Jan/Feb, 1994
■ "Performance of Key Functions in IBM DCE Client for
Windows" by Ray Pekowski, a white paper
CS24
IBM LAN Systems Performance
Austin, Texas
IBM
Work In progress ..
The current contents of this presentation reflect performance
testing still in progress at the deadline for the conference
proceedings.
DCE Enterprise
Performance
Final performance results and discovery of any unexpected
behavior will be added before the conference date. Updated
handouts will be available at the conference sessions.
OSF DCE Developers Conference
o Boston, 29 Aug 1994
PSP Technical Interchange
b Atlanta, 11 Sep 1994
o Berlin, 19 Sep 1994
Bob Russell 512-838-0844
Tim LI 512-838-0449
Ray Pekowski 512-838-8164
11400 Burnet Rd
Mail Stop 9151
Austin, Texas 78758
Copyrights and Trademarks
Agenda
b Copyright 1994, IBM Corporation
- IBM, PS/2, OS/2, AIX, RISC System'6000 are trademarks or registered
trademarks of International Business Machines Corporation
0 Some of the information has been published in IBM Personal Systems Technical
Solutions, Jan/Feb 1994, and July/Aug 1994, and PSP Technical Interchange
proceedings April 25, 1994.
« The origional cartoon character is ba.sed on the character 'Sam', copyright 1978,
1979, 1982, 1983, 1989 by R. O. Russefl
n Non-IBM Trademarks include: OSF is a trademark of the Open Software
Foundation Inc., NFS, Network File System, Sun, SunOS, Sparcserver, ...
Sparcstation and Solaris are trademarks of Sun Microsystems||d|i:^|j HP
HP 9000 and Hewlett-Packard are trademarks of Hewlett-Packard^bTnp^
Snifter Network Analyzer is a trademark of Network General Corporation. S
a trademark of Sparc International.
«. Tinkertoy is a registered trademark of Playskool Inc., a subsidiary of Hasbro Inc.
b This presentation is unclassified
■ introduction
■ POS Benchmark
» System Topology Performance Studies
- Clients
- Network Support Servers
- DCE Core Servers
- Application Servers
- Ethernet Gateway
- Remote Offices
► High-speed WAN
► Low-speed WAN
■ Q and A
LAM Systems Performance, Austin
Customer Requirements
Survey Results - January to June 1994
a DCE for OS/2 and Windows
* DCE/6000 for AIX
h IBM LAN Server
. AnyNet/2 Multi-Protocol Transport Services
» LAN Distance
® Workplace
| Relative Importance (Normalized 1-10) |
Rat form Windows OS/2 AIX MidRange Mainframe
Client Workstation
1 5
10 6
Application Server
10 9
4 3
DCE Server
9 10
3 2
1-99 1 00-499 500-999 1000-4999 5000+
Number of Clients
2
10
5 1
Builcfing City State Country Global
System Geography
8
10
1 6 1 2 _
Data
Database Transfer Graphical
Application
Characterization
9
10
3
1K-4K
32K-64K
512K-1M
Data Transfer Size
10
6
_
4
CS25
CS25
Enterprise Topology Objective
Point of Sale (POS)
■ High visafeiiaty elements
of many customer
applications
■ Based on the premise of
a retail catalog order
entry transaction
3 5.5 Authenticated RPC
calls per Custom©? SaS©
■ Workload assumptions
One client processes on
complete customer sal©
in on© minute - 1 CSPfyi
Client
Primary Server
pa
Customer
Ml
POS IDL
Catalog
i posappi. ir~L
i_i i_i
Client RPC stub
Price
History
Server RPC stub
POS Customer Sale
. DCE API Calls
- rpc_ns_bindingJmport_begin
option: force expiration of local CDS cache
- rpc_ns_binding_import_next
- rpc_ns_bindingJmport_done
- rpc_ep_resolve_binding
- rpc_binding_to_string_binding
- rpc_binding_set_authJnfo
default: CALL level authentication
■ POS RPC Transactions
- CATALOG get 16 KB image of catalog page,.:.v:$|i:!^^
- CUSTOMER get account record by phone numbSrf§12 bflps
- PRICE get price and description for 2.5 items, 168 bytes
- HISTORY write sales information to history file, 384 bytes
■ DCE API
- rpc_binding_free
option: force client to DCELogin periodically
Philosophy
■ High-level performance analysis
a Psychoanalysis, not brain surgery
■ Throughput vs. RPC response time;
- Responses less than 1 second are instantaneous
- Responses more than 1 second are too long
■■ The reported throughput assumes 90% of the responses
are under the 1 second guideline
Theme: Construction To r
Baseline Throughput of the
"Standard" Cell Configuration
With and Without Re-Binding
DCE Servers
"Standard" Configuration
Primary Security Secondary
CDS & Time CDS
PS/2 PS/2 PS/2
9585 8595 9577
50 MHz 33 MHz 50/25 MHz
CDS Namespace and Security Registry!
Population Assumptions TL
a The initial CDS Namespace population is based on
statistics from large customers using IBM LAN Server
* Assumptions:
- Directories are about 1-to-1 for users.
- Five to eight applications (objects) for each 50 users.
- Fifty users per LAN domain.
■ Initial DCE entities:
- Security Registry
► 1,000 Accounts and Principals
► 20 Groups
- CDS Namespace
^ 1,000 Directory objects
► 160 Program objects
DCE Administrator Script
■ sdscp 3 rgy_edit, acl_edit and rpccp
■ Script runs In 2.5 minutes
a Second half of script backs out changes made during the
first half
■ Script runs contfnuosly
Effects of Security Registry and
CDS Namespace Population
■ Measure maximum throughput with:
- Default Registry and Namespace population.
- Add 1000 to DCE Security Registry.
- Add 1000 to DCE CDS Namespace.
■ Repeat tests with a Secondary CDS server configured.
- Throughput was 1,640 CSPM +/- iq for each test.
- No measureable effect on steady-state performance for
any of these variations. +
- The first invocation of DCELOGSN and Tt*
rpc_ns_bindingJmport_riext were slightly longer. 'H
“ The time for CDSD to initialize on the CDS server is
significantly longer with the full CDS population.
“ The time for clients to start and configure SCLSENTD is
noticeably longer with the full Registry population.
PS/2 and RISC System/6000
- PS/2 Model 8595-0KD $3
MHz
■ RISC System/6000 Model
520
CS25
Throughput - CSPM
OS/2 and ASX Dedicated Servers
POS Application Server DCE Services Server
DCE Server Topology Comments
- CeSS throughput within 5% range when DCE Servers
substituted within:
- RISC System/6000 Models 580, 520, 220
- PS/2 Model 95 33 MHz, 50 MHz
- Hewlett-Packart HP 9000 Model 8278
. The presence of a Secondary (redundant) CDS Server has
no measurable impact on cell throughput
- Except: Clients don't see changes to the CgS
namespace until the Secondary CDS serv^iii^^at^
normally about 30 seconds *
POS Distributed
Application Servers
Multiple Application Servers
One to Four Application Servers
Point of Sale Distributed
Distributed POS Application
[ POSAppi. ||~|.
Primary Server Surrogate Servers
POS IDL
Customer IDL
Customer
Catalog
Price IDL
Price
History
■ Relieved the POS
application server's I/O
bottleneck
■ 54% improvement in 2
throughput &
■ New bottleneck is the j
application server’s CPU |
a Aggregate response time
for complete Customer
Sale (5.5 RPCs)
increased 13% from 4.6
to 5.2 seconds
POS Performance with
Two Surrogate Servers
CS25
POS Application Servers
"Standard" Configuration
Five POS Primary servers
PS/2 8595/8590 33 MHz
RISC/6000-220 RISC/6000-580
or 520
Primary Server Surrogate Servers
PS/2 -vs- RISC System/6000
POS Primary Servers
tfiji
Discussion:
Multiple instances of an application
mu
T f
* Things to consider when running multiple instances of an
application to handle additional workload:
* CDS binding import randomly selects a server binding.
► Adding a super-fast application server to handle peak
hour loads may cause a horsepower mismatch.
► The maximum total throughput is equal to n times the
slowest server.
Ethernet LAN Segment
Other Headquarters Hardware
Ethernet Topology
Thick-wire Thin-wire
Ethernet Ethernet 10BASET
Sun
Sparcstation
LX
Hewlett-Packard
HP 9000
827S 730
Sun
Sparcserver
1000
Read/Write Response Times
. POS "History"
transaction: Write
(append) 284 bytes.
- POS "Catalog"
transaction: Open, Read
18 KB, Close.
Application^ File
Server — Server
Response Time (milliseconds)
CS25
Throughput - CSPM
NFS Sharing of POS Databases
mmmti
IFt
LAN Server 3.0
Advanced
LAN Server 3.0
Entry
100 200
Client Workload
LAN Server 3.0
(all POS databases)
«, NFS/6000 for AIX
45%
“ NFS for OS/2
100 200 300
Client Workload
Network File System
(History and Catalog only)
gateway router
-16 Mbps Token-ring
- 10 Mbps Ethernet
» Sharing files on:
- RISC/6000-220
- RISC/6000-520
- RISC/6000-580
- SUN Spareserver 1000
- HP 9000-827S
* Communications
hardware bottleneck
Token-ring Ethernet Token-ring
Token-ring Ethernet Ethernet
NFS mount Access Path
Enterprise Mode!
Remote Offices and WANs
High speed Sink between
Headquarters and the Region Office
HwSVWWP’nng Network Bridgi
inf
Low speed link between
Region Office and Branch Office
Region Office
Clients
PS/2 - OS/2
PS/2 - Windows 3.1
Region Office
to
Branch Office
Minimum Baud Rate
for One Client
0 LAM Distance is intended for a single user
0 At 38,400 bps, 7=5 QSPM saturates the line
b One client would require 5,120 bps
Comparison:
Ping 4K -vs- Authenticated RPC 4K
1 3
RPC Data Transfer
Authentication Levels
WORK IN PROGRESS
Questions and Answers
Backup Slides
Business and Computing Environments
There is a need for a technology which is:
• More sympathetic to the diverse nature of
networks
» More tolerant of the different operating
environments
e Less exacting rules to be followed by the
applications to
interoperate
The answer is Messaging and Queuing
/S Some Reasons for Distributed Processing
9 New Business Opportunities
-Business partners (suppliers, distributors,
customers)
-Automation of bus ness procedures
© New Client - Server Model
- Smaller client workstations
- Larger servers, located to suit business needs
® Cheaper Processing
- Integration of applications on smaller processors
-Sophisticated applications
© Better Access to Data
- Uniform data access
- Data closer to end user
mge
Spans ' 1
Link Islands Together
® Improve Productivity
© Improve Efficiency
® Improve Customer Service
@ Reduce Costs
CofiWM >99< U2rpora/ort
The Networking Blueprint
® One interface across a wide
range of platforms
® Shielding of developers from
networking complexities
© Business flexibility
through time-independent
processing
® Robust middleware for
business-critical, distributed
applicafions
mmt
«»□
Messaging and Telephone Analogy
Successful call depends upon:
Constant communication line
availability
Constant people availability
Common, defined language
Communications Protocols defined internationally
Do not need to know WHERE telephone is or HOW
telephone connection happens
Simply need name (telephone number) of
destination
PoInt-to-Point Connections,
Many-to-Many Connection Exploslor
' „ i Answering
: Machine
Partner may be busy
Partner may be absent
Messages can be picked up at later
time
MQI Communications
Connector
Application Programs
Retail Example, Mixing Environments
3uo:n«o» ApptkiaSorts
American Management Systems Inc
American Software
Dun and Bradstmet
Early, Cloud and Company
Emprise Technologies
Inlormation Builders. Inc
Integral Systems Inc.
Paxus Corporation (now Continuum)
Policy Management Systems Corporation
PRJ&. Inc
SAP ag
SDM International, Inc
Software ag ol North America
Systematics Inc
The Continuum Company Inc
Syofout Sofegrciku'S and 'SSOo
Data Sciences B V
Science Applications International Corp
TCAM Systems Inc
Technology Solutions Company
System Stanagemeni
Boole and Babbage
Candle Corporation
Computer Associates Int'l
Landmark Sysems Corp
Af> To:: Is
Programart Corporation
KnowledgeWare Inc
Seer Technologies
ssx ssr
IBM Capcr&Ux>
The Four Values
Time-Independent! Processing
3
One Interface Across IBM/norHBM Platform:
Dr. vtjay Ahuja
Scott Baumann
ftf' Market Plaimini j
RIP, NO
919-2547416
. c k s;i t*M . m m) •
problem!
'C:lS-:illl,: : * $s$4M <&*£to efe<$t ta$t ysii^
Oom^teiworl^ ($?i 1/98):
♦ ik>mmuric^oris- f%&ud Cartel As&oci&to:
Ifll'l-i;::: i'iii::: • lillllQiss ^rssti^ -access fa compute. & f ^ioptaas-
to mm4 $mM to &&; $m Worldwkto
111
♦ 43% w&tit 8i?i©i!$ &s$rf.Oo Network A&5&9&
Tractertiarks
Tire foliowieg terms ate tisMte thlr oteMte&tiCfrt add atelde '{rad^fn^rks.:': •■'
■ imSEMim 9BHMI
AIX/8GG0 OfOS •
1;: OS/400 IMS " "V-i
OS/2 CMS
MBH|| §§g|^^
■ ' : 1 '' V ■ " 1 : | V’ " : jind; H le '"td< . ifks
ofottisfCw^nfes:
UNIX- UNIX Systeaia Laboratories
SltiteO -. Digital Eeppment Corporatoji^li^Selvl^' Packard Co<
SUN - SUN Mterosystems toe COS - Open Software Foundation
Novell» Novell
Network Security
MaaaaaaagBasaaa^^
llll :; lllii ; 1:;M
. * t SSo^togoolomuftlfSe^pBcatloos
ii:sMfflll ; - l^soum ^ss^^exifian^ for.rpi§!|jjfex,
* 3. Authentication
* 4 Aueit
* s. Bate totegi%
lllpl-
* 7. Authorization
8, Access control
§. N^ 4 ftejto<s 86 on
lr A'CttSfeWrtSSfSSOVitoKrtotfeiife^ £
,. tvfultr-plalfortft: % I, D0S t UOSW, AIX iOQ8, SUN, H2)
!!!ii!|!::ij©::i ' • si 111111111
llltSeewfi? '•'
IH .
atlantaOl
|>Upei|oj|i^
AuthenticatiM:
Server
/\
Application
Server
Authentication
•Server-: . : i:v;/:vj : i
/ \
(gOBytes) 'Server ij|
Router ' '. '<j g ', •:'|>i ' .l -.itouter • lilll
Hub .; ; **• I»Ml Hub :
^.H^'-'^^Wirelesa^ —I**: Wireless SSi^
/ ^-rr^ v^un, am
; : Netw^rj^la^r-^tJtliiaiit station
^Remote user
'•P&Mr* user I
- a ••
o
•Mthenticationi
Servers,;-:?::::,...:
jlfcatiort
erver
! t-R#f ti|ri"Q : Bnn 0 cts ' tc ■' V
llllilli SIC liorAccessto cfient/serverA^Be^tiojns);;.-:-.x;. l£;::
iilliil
itutHlriticaSoiil
Server ^.,1
/\
Client ' Application
=~ • ’ ?.v. ;.:. Sewer ■
Raleigh
Silip-i
RAGF $§frgj§ Secure Slgn-on Ftewglll
RACF':Siiii!eSecttre:SlifeSis’:fei.»f1fe:
Uaafrtffly & Productivity
q ’ pr^Sps i p&si I
Q. U&EfttyPEfe
:|<:: N^t ? Mffi '$?
■. Bsg« t¥pes-.- W:i§ -X. XX S. ..: : . • ; : :; W >■ ‘ .-; : X : : • \J
h; i <&M
*■ aojartti
tSO •,::
Wfkwsin^ear &Rrf
*• Mb & pg£$W^<fe fey H$ 9 F
(Sostafftae-ifet $$$m& &&#*} ;;:::::: ; :::i::;:!;::;i§s-j
• W -eft-moas to tsustQfftef afepBoaflana <*t 3570: isfouiatofa
*&o aee<S to fafnernbar how to asyfeats tftro -yarfoas senses
ilsiiliil^ (NVAS)
Products
* Use a sfogte API call In cpateation
•i:"-::’:; ;; x.! Sl^ortfQf ^o*v 3£70
i:ix-^;:!il:' : ::::i ^.-: : :i: -: :: ; i: i>:::;^:l!: : : '!; : :: :;; £p$k&tlons ' %g:i'& •ivx-'-v"' =>'.: v 3
.■•• ■> r ■ i
mmmmmm
■?'■ ": •,.Jk £ -.A^VBj
NatWare_B |§?
. -Jofon,
i Automatic login to servers ?•> $£&' ■;■!
■ Password Sycrohrortlzod aceros$ sorvers
$eoareiy
GSS~APl Flows :
Back-up Capability
B : e-SoaJing WHenfieattm Server TSsafSc
SeoQrnmenctatkms: S
Upgrades '&#« next ijar ol usage is easy as 1 -2-3 '
t. Placed® orderfor the next tier
Z. Call the 800 nurnfoet to revive Ihe special password
SES^ISP•".:.=•/•= S'.?^ 1 '."^W :: % ilj
Other Neat Capabilities
Client ... y ; . ' • 'V;;'. . -..i S-.- Client
LogI|f ! Off i*it:
j^^Nbtiffilcu’rl# administrator) 1
mtmteQ?.
jjf'fe pt^ctedbf tli@ expwfjl
eali§ • :8O0-4|i!ll;!:::ll|:;;;
IBMUnli
f#t^©ildiig : Blaeprlnt’!©f ; ; ; l|ie;,|tfS : ^ : SfJfpyy
atlantaOS
NetSP Direction/
Network Security Program and DCE
■ ■;• * til* fetsmsecurtty S % ilMISliiSv Will
Ililli: *M8P is- IBM’s ^taeadd to the : PCE : ;pro<iucia. | J;
• AS/400
provides a Sinofe SeeOfe siioonto. BAOF iip;! -
• ipl .||'v Applications s; P|§| ilgs/ .
ISSiBBHBIiMMMHBBWMBHIi ’HBKl 1 M
network layer
• AS/400
p|ff|i : || authentication |§|§§1
j: :V; g ; ;V |{S'!' • v»• x j, + ' ' •' |;|| || : •.’• |;||''■• : ;:||| ,;.;. : Ig||f:g||||gg|•' -• • g|f%s •. •'' • |:
IllllvifiSfel4v DOE integration ||j111 |f|II
• • ~ Provy^.;.oallabls.sec^fi^j^iy|^S;ffe the GSS-APt
^ leeure remote ■adminlstr^|^||i|| : |;|/:''
atlantaOQ
Oney^erKI.
TO;
&$J2
HIHII
IMwa
AJ!kfl5G^|
llpft-!:: : ;
RACFMVSyVM
iMt
CM/2 ✓
.; Rumba
PC3270 ✓
Irma DCA ^
Attachmate
PC3270 V
Irma DCA ^
Attachmate V
X3271K
X327(K
X327(K
GotPasaTTckaK
Gat_Pa83TlckeJ^
Qet_Pa3sTichar
Qet_Pas3TIck8f
GetPaasnckof
Gat_PaaaTlckeK
om'mmi -: : m^
i®ii»liiiilsil::il
24
N/A
N/A
N/A
N/A
N/A
©s/2
24
!$!§i§S
✓
✓
N/A
N/A
N/A
ii®ii«iii
3-^2,441
iSS*:;: v
✓
V
N/A
N/A
N/A
&S&API
esaa&ted P-.&&
iliiii»!iii!i
-/
✓
✓
✓
✓
✓
K ‘ >k ^pduct III
* =*• Sets irads awajfo&aflo &e sreHafete
atlantal 0
CS29
Outline
Sockets programming with
IBM TCP/IP for OS/2
Andre Asselin
IBM TCP/IP Development
Research Triangle Park, NC
► TCP/IP fundamentals
- Network addressing and domain names
► Sockets basics
- Stream, datagram, UDP, TCP, ports, host
siddrsssos, b!^ 8 ©ndfiin vs. IfttSs sncJisn, clisnt flow
► Example UDP and TCP clients
► Socket function descriptions
► Example UDP and TCP servers
► Advanced sockets issues
- Blocking vs. non-blocking sockets
- Multithreaded applications
- Porting and compatibility issues
Acknowledgment
► I’d like to thank Bill Snow in IBM TCP/IP for
letting me use his presentation on sockets as a
starting point for this presentation
Your goal: to move data between
host 1 and host 2
A fomt Is a computer on a TCP/IP natwork
An internet address is a 32-bit number
32 bits — - -—|
192 . 153 . 46 . 2
| - T -—
I
nils Is called dotted decimal notation
0xC0992E02
Hosts are known by their Internet (IP) address
Hosts are also known by their domain name
A domain name server maps a domain
name to an internet address
Sockets is not specific to TCP/SP
What's the difference between
a TCP and a UDP socket?
A stream is like a phone call
TCP
UDP
Stream oriented?
Ym
m
Moderate
Lew
Reliable protocol?
Ym
MBB. ^
A datagram is like sending a fetter
Ports allow a host to separate different data
Interesting facts about ports
Ports fail Into three categories
► You actually send data to a particular port at a
given host
► There are two sets of port numbers
- One for TCP
- One for UDP
s- Because of that, to fully specify who you want
to send data to, you need the combination
(IP address, port #, protocol)
► Ports 0 through 255 are reserved for official
Internet services
- ftp, telnet
► Ports 256 through 1023 are reserved for other
well known services
- rexec, kerberos
► Ports 1024 through 65535 are for general use
General socket addresses
► The sockets APS defines a data type that
specifies the general form of an address that
spans TCP/SP, XNS, OSt, etc.
struct sockaddr {
unsigned short sa_family;
char sa_data[14];
}
► sa_f amily is used to specify the type of
address
- examples: af_unix, af_inet, af_sna
- TCP/SP for OS/2 only supports af_inet
► sa_data is specific t© the type of address
TCP/IP socket addresses
► The sockets APS also defines a data type that
specifies a TCP/SP address
struct in_addr {
unsigned long s_addr;
};
struct sockaddr_in {
short sin_family;
unsigned short sin port;
struct in_addr sin_addr;
char sin_zero[8];
};
► This structure overlays the sockaddr structure
sockaddrjn details
The Internet standard for byte ordering is
Big Endian
struct in_addr {
unsigned long s_addr;
};
struct sockaddr_in {
short sin_f amily;
unsigned short sin_portj
struct in_addr sin_addr;
char sin_zero[8]?
};
► sin_family specifies AF__INET
► sin_addr specifies the internet (IP) address
► sin_port specifies the port at that host
*■ sin_zero should be set to 0
Byte reordering functions
Why are we concerned with byte ordering?
short htons(short)
long htonl(long)
short ntohs(short)
long ntohl(long)
H n
network to host_ _
host to network
long / short
► The s_addr member of in_addr and the
sin_j?ort member of sockaddr_in are both
kept in network byte order
► Sf you assign values to these members, the
functions on the previous page may be useful
struct sockaddr_in server?
For example,
x = htonl(y)
reorders the bytes of y into network order and stores the result in
server o sin_f amily = AF_XNET;
server,sin_port = htons(1492);
servero sin_addr e s_addr =
htonl(0x09674372);
Functions to manipulate IF addresses
Example of setting an IP address from a
command Sine argument
*inet_addr
- Takes an ASCII IP address (i.e. "9.67.43.72")
and translates it into an IP address
►inet_ntoa
- Takes an IF address and gives you back the
address in printable format (i.e. "9.67.43.72")
►gethostbyname
- Takes the domain name and gives you back
the SP address
► gethos tbyaddr
- Takes an IP address and gives you back the
domain name
struct sockaddr_in server;
struct hostent *hp;
/* If it’s a dotted decimal address (i.e. '9.67.44.33')/
inet_addr{) will convert it */
server.sin_addr.s_addr = inet_addr(argv[2]);
if (server.sin_addr.s_addr == -1) {
/* it wasn't dotted decimal -- assume it's a domain
name (i.e. ’ software, watson. item. ccen ', and use
gethostbyname() to convert it */
hp = gethostbyname(argv[2]);
if (hp) (
server .sin__f amily = hp->h_addrtype;
memcpy(fiserver.sin_addr, hp->h_addr,
sizeof(server.sin_addr));
} else {
printf("Unknown host %s\n", argv[2]);
}
i
A socket is what a process uses to
send and receive data from a port When a program first starts, it has no sockets
So the first thing it does is it creates
a socket with the socket 0 cal!
St then associates the socket with a
local port by using the bindO call
When it’s all done, socloseO is used to dissolve
the connection and destroy the socket
Overview of a client program
i \ Initialize sockets library
; Connect the socks
i
! a remote server p<i
/ ^
V /
V._
| sock_init() |
I
t
I connect()
i
*“ T*
(a i cp/ip network!
) (an internet) J
server
Create a socket
socket ( )
J __
Transfer the data
send() / sendtoO
recv() / recvfromO
- 1
r ^
! Bind the socket to a
i |
| local port
_?_
Close the socket
! bind () ;
soclose ()
r _
1
example TCP client
6
An example UDP client
int main(int argc, char **argv)
int tcp_socke t, rc;
unsigned short port;
struct sockaddr_in server;
char buf[32];
chair *server_address;
int main(int argc, char **argv) [
int udp_socket, rc;
unsigned short port;
struct sockaddr_in server;
chair buf [32] ;
chair * s erver_addres s ;
rc = sock_init () ;
server_address = argv[l];
port = atoi(argv[2]);
tcp_socket = socket (AF_INET, SOCK_STREAM, IPPROTO_TCP);
rc = sock_init() ;
server_address = argv[l];
port = atoi (airgv [2] ) ;
udp_socke t = socket (AF_INET, SOCK_DGRAM, IPPROTCMJDP) ;
memset(Sserver, 0, sizeof(server));
server . s m_f amily = AF_INET;
server.sin_port = htons (port);
server . s in_addr . s_addr = inet_addr ( server_address) ;
rc = connect (tcp_socket, Sserver, sizeof(server));
strcpy(buf, "Hello World!");
rc = send( tcp_socket, buf, strlen(buf)+1, 0);
soclose (tcp_socket);
memset(Sserver, 0, sizeof(server));
server.sin_family = AF_INET;
server.sin_port = htons(port);
server.sin_addr.s_addr = inet_addr (server_address);
strcpy(buf, "Hello World!");
rc = sandto (udp_socket, buf, strlen(buf)+1, 0, Sserver, sizeof(server));
soclose (udp_socket);
Error handling
sock_lnit() - initialize the sockets library
Most sockets calls return -1 to indicate an error
occurred
sock_ermo () will return a code to indicate the
cause of the last error
- nerrno.h defines the error constants
► SOCEWOULDBLOCK, SOCEALREADY, etc.
- The error constants have SOC prefixed onto
them to avoid naming conflicts with C/Set
error constants
- sock_errno () is thread safe
psock_errno () will print a message to stderr
indicating what error occurred
Syntax:
int sock_init(.)
Return Values:
- 0 = success
- 1 = error
► NOTE: an error is signaled by a return value
of 1, not -1 like most other sockets calls
► Most probable cause of error: INET.SYS not
loaded
► sock_errno () is not set by this call
Must be called before any other sockets
function
socket() - create a socket
socket() - create a socket
Syntax:
int socket(int domain, int type, int protocol)
Parameters:
-domain - addressing domain
► must be af_inet
- type - type of socket
-SOCK_STREAM
• SOCK_DGRA»«-
► SOCK_RAW raw socket (not discussed here)
-proto col —wtHeh ^roteeeHo use
> o
* IPPROTO_UDP
- IPPROTO_TCP
default protocol based on type
sock_streanri —IPPROTO_TCP
sock_dgram —PPRGTOJJDP
► Return Values:
- -1 = error
- anything else = socket handle
bin dQ - bind a socket to a local port
Syntax:
int bind(int socket, struct sockaddr *name, int namelen)
Parameters:
- socket - socket to bind
-name - Soca! IP address and port to bind to
► Points to a struct sockaddr_in
► If name - >sin_addr. s__addr ==
inaddr_any, then the socket is bound to
any of the host's IP addresses
► If name ->s i n p ort == 0, then the socket is
bound to any free port
-namelen - length of name
Return Values:
connectO - connect a socket to a server port
Syntax:
int connect(int socket, struct sockaddr ‘name, int namelen)
Parameters:
- socket - socket to bind
-name - remote IP address and port to connect
to
- points to a struct sockaddrJn
-namelen - length of name
Return Values:
- 0 = no error
- -1 = error
bind() - bind a socket to a local port
► Only necessary If
- you're frying to receive information and you're
not going t© do a connect () or send* ()
first (they automatically do a bind)
_ %mai paro laibi^b rmrt vmi canrfi/rocohm wry ir
- jr ^9 <fe«S 'Ca?Sfe<a B V «f»BBB'W»BB gfeC B a g "to* * ■ '***! B >*0 S w W JJ -«» ■
data on (Le. if It's a server program)
Which data transfer calf should you use?
send / recv
sendto / recvfrom |
wrltev / ready |
- m —
m
E
>
o
Q
Sbb
m
w
E
-a
c
m
m
Number of buffers
(S=SBogl@, M=multiple)
S
S
M
M
Additional options flags
Y
Y
N
Y
Any socket /
Connected socket only
C
A
C
A
Server address a paramefc
N
Y
N
Y
What use is multiple buffers?
1000
1010 !
3030
Suppose you want to send the
data at address 1000 then the
data at 3000, then the data at
2000
Sending data using memcpy ()
and one single buffer call
3000
4040
4045
Sending data using multiple single buffer calls
You can send the data using
three singie buffer calls
send(socket, 1000, 10);
send(socket, 3000, 30);
send(socket, 2 000, 5) ;
2000HHHH
200s|
aooo^BHj
3030
1000
1010
Sending data using a multiple buffer call
3030
writev(socket, &iov, 3)
recv(), recvfromO, readv(), recvmsgO - receive data
recvQ, recvfromO, readvQ, recvmsgO ■ receive data
► Syntax:
int recv(int socket, char *buffer, int buflen, int
flags)
int recvfromdnt socket, char *buffer, int buflen, int
flags,
struct sockaddr *name, int *namelen);
int readvdnt socket, struct iovec *iov, int iovcnt);
int recvmsgdnt socket, struct msghdr msg[], int
flags);
> Parameters:
- socket - socket to receive data from
-buffer - buffer to hold incoming data
-buflen - length of buffer
- flags - flags for the receive call
» 0 - Normal read operation
- MSG_PEEK - Read the data but don’t remove it
► ySG_OOB - Read out-of-band data (not discussed)
send(), sendtoQ, writevQ, sendmsgQ - send data
► Syntax:
int send(int socket, char *buffer, int buflen, int flags)
int sendtodnt socket, char *buffer, int buflen, int flags,
struct sockaddr *name, int *namelen);
int writevdnt socket, struct iovec *iov, int iovcnt);
int sendmsgdnt socket, struct msghdr msg[], int flags);
Parameters:
- socket - socket to send data
-buffer - buffer that holds outgoing data
-buflen - length of buffer
- flags - flags for the send call
> 0 - IMormaS send operation
„ MSGJDONTROUTE - Turns on the SO_DOMTROUTE
option (see setsockopt ())
- i$SG_OOB - Send out-of-band data (not
discussed)
► Parameters (continued):
-name - remote IP address m<& port that sent the data
* points to a struct sockaddrjn
-namelen - length of name
- BUG Watch: if this parameter is MULL, the system will trap
under GA & GSD1 - CSD 2 fixes it
- iov - array of buffers and lengths
- iovcnt - number of entries in iov
-msg - array of buffers and lengths plus an optional field to hold
the address of the machine that sent the data
> Return Values:
- 0 = connection is closed (connected socket only)
- -1 = error
- anything els© = number of bytes received
sendQ, sendtoQ, writevQ, sendmsgQ - send data
► Parameters (continued):
_ name - remote IP address and port to send the data to
► points to a struct sockaddrjn
-namelen - length of name
- iov - array of buffers and lengths
- iovcnt - number of entries in iov
-msg - array of buffers and lengths plus an optional field
to hold the IP address and port to send the data to
► Return Values:
- -1 = error
- anything else = number of bytes sent
► MOTE: This can return SOCEWOULDBLOCK
sodose - destroy a socket
► Syntax:
int soclosednt socket)
► Parameters:
- socket - socket to destroy
» Return Values:
- 0 = success
- -1 = error
A UDP server example
main(int argc, char **argv) {
int udp_socket, rc, namelen;
struct sockaddr_in client, server;
char buf[32];
rc = sock_ird t() ;
udp_socket = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
memset(Sserver, 0, sizeof(server));
server.sin_family = AF_INET;
server.sin port = 0;
s erver.sin_addr.s_addr = INADDR_ANY;
rc = bind(udp_socket, Sserver, sizeof(server));
namelen = sizeof(server);
rc = getsockname(udp_socket, Sserver, Snamelen);
printf("Port assigned to server is %d\n", ntohs(server.sin_port));
namelen = sizeof(client);
rc = recv£rom(udp_socket, buf, sizeof(buf), 0, Sclient, Snamelen);
printf("Received message '%s‘ from IP addr %s, port %d\n", buf,
inet_ntoa (client. sm_addr) , ntohs (client .sin_port)) ;
Overview of a UDP server program
Overview of a TCP server program (1)
Overview of a TCP server program (2)
SistenQ - prepare a soc ket to receive connections
► Syntax:
int listen(int socket, int backlog)
► Parameters:
- socket - socket to bind
-backlog - size of queue for incoming
connections
» Return Values:
- 0 = no error
- -1 = error
A TCP server example
Int main(int argc, char **argv) {
int tcp_socket, session_socket, rc, namelen;
struct sockaddr_ln client, server;
char buf [32];
rc = sock_init () ;
tcp_socket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
memset(&server, 0, sizeof(server));
server.sln_port = 0;
se rve r.sin_addr.s_addr = INADDR_ANY;
rc = bind(tcp_soeket, sserver, sizeof(server));
namelen = sizeof(server);
rc = getsockname (tcp_socket, sserver, snamelen);
prlntf("Port assigned to server Is %d\n", ntohs(server.sin_port));
rc = listen(tcp_socket, 1);
namelen = sizeof (client);
session_socket = accept(tcp_socket, sclient, snamelen)?
prlntf("Connected to IP addr %s, port %d\n",
inet_ntoa(client.sln_addr), ntohs(client.sin_port));
rc = reev(session_socket, buf, sizeof(buf), 0);
prlntf("Received message *%s'\n", buf);
soclose(sesslon_socket);
soclose(tcp_socket);
acceptQ - wait for a client to connect
► Syntax:
int accept(int socket, struct sockaddr *name, int namelen)
► Parameters:
- socket - socket to bind
- name - remote IP address and port of new
client
► points to a struct sockaddrjn
-namelen - length of name
► Return Values:
- -1 = error
- anything else = socket handle of new client
connection
Blocking vs. non-blocking sockets
Using multithreading in a sockets program
► A socket can be in either of two modes:
blocking or non-blocking
► Sockets start out as blocking
► Two switch between the two modes, use
ioctl(sock, FIONBIO, ...)
► An example to illustrate the difference:
- Suppose you have a socket that has no data
waiting for you to read
- Sf you issue recv ( ) on a blocking socket, you
will not get control back until data arrives on
the socket
- If you issue recv { ) on a non-biocking
socket, you will get control back immediately
► It's simple: just start more threads as you need
them and have them issue sockets calls
► sock_ermo () will return the last error code
that occurred in the current thread
► One caveat- only the following sockets calls are
reentrant
- accept
- listen
- soclose
- bind
- recv
- sock_errno
- connect
- recvfrom
- recvmsg
- gethostid
- select
- sendmsg
- getpeername
- send
- readv
- getsockname
- sendto
- writev
- getsockopt
- setsockopt
- shutdown
- ioctl
- socket
- psock_errno
Porting considerations
► On the whole, the sockets API on OS/2 is very
compatible
► Specific things to watch for:
- The ioctl () and select 0 calls have a
different syntax
- Sockets are not file handles like on UNIX
- Sockets are global across the system, and are
not inherited by child processes like file
handles
- Constants for error codes are preceded by
'SOC
- Use sock_errno ( ) instead Of errno to
retrieve the cause of the last sockets error
interfacing with INETD (TCP apps)
► Add your program to INETD.LST
► When your program is executed, it will receive
exactly 1 parameter- the socket it should use
► Do the normal sock_Jnit()
► Call addsockettolist (socket) , where
socket is the socket number you were passed
on the command line
- This associates the socket with your process
instead of INETD so that the sockets library
will do clean up properly
► Do your processing
► Do a soclose() before you terminate
Ring 0 interface
* The S032DLL.DLL and TCP32DLL.DLL can only
be used from ring 3 (regular user) applications
*. There SS a ring 0 interface to TCP/IP
► It consists of a subset of the functions that are
in the 'reentrant’ list
Contact IBM if you need to write a ring 0
sockets application
CS30
Outline
ONC RPC programming with
IBM TCP/IP for OS/2
► Description of RPC
► RPC concepts
► Programming for RPC
Andre Asselin
IBM TCP/IP Development
Research Triangle Park, NC
_ What is ONC RPC?
► ONC stands for Open Network Computing
► RPC stands for Remote Procedure Call
► RPC is a high level interface that lets you
send/receive data between computers
► There are other, incompatible, versions of RPC
(DCE RPC is a popular one)
► RPC uses another Interface called XDR
(external Data Representation)
#. One widely used protocol built on top of RPC"
Sun's NFS (Network File System)
RPC is a layer on top of Sockets
Andre Asselin
08/08/94
Page 1
RPC concepts
Programs, versions, and procedures
► The concept behind RPC is that when you need
to communicate with another machine, you
Invoke a procedure that executes on the remote
machine
► To make sure you Invoke the right procedure,
RPC groups procedures Into programs
► Each program also has a version associated
with It so that you can upgrade the protocol and
not worry about backlevel clients
► To specify which procedure you want to invoke
on a server, you have to specify a combination
of (program #, version, procedure #)
-f-
... yyyy ■ yy; :xyyy yyyyy
client
^ f" ^
server
XDR
XDR is used to specify the format of the data
that is transmitted over the wire
it defines types for
- Integers (long and short, signed and
unsigned)
- character strings
- arrays (fixed and variable length)
- struct's
- discriminated unions
- enum’s
- booieans
- opaque data (fixed and variable length)
XDR language & RPCGEN
► XDR defines a language that's used to specify
new protocols
► To make RPC programming easier, a program
called RPCGEN wiil generate stub files for both
client and server with all the correct calls
► To use RPCGEN, you create a *.X file using the
XDR language that contains a definition of the
protocol you're creating, and then run ft through
RPCGEN
► (see MYPRINT.X)
Output ©f RPCGEN
Typical RPC client flow
► If you run the previous .X file through RPCGEN,
you'SS get
- MYPRINT.H - header file for C data types and
generated procedures
- MYPR!NTC=C - client side stubs
_ hyprints o c ~ ssfvsf side main program
- MYPRSNTX.C - XDR routines for new data
types
► The client side is going to need some
initiaiization routines
► The server side needs you to create procedures
t© handle each of the calls
► fsee MYPRINT*\
7
clntudp_cr@ate
einttcp_crea£e
i _,
i
autfinon@_cr@at4
authuniix_er@ate|
PORTMAP
► RPC programs don't have to be on a specific
port
► To find an RPC program on a server, the server
runs a program called PORTMAP which takes
the program and version you want and returns
the port number the program is listening to
► This mapping is done during clnt*_create ()
if you specify 0 for the port number in the host
address
► PQRTMAP uses port 111
clnt_call
_jL
ayth_destroy
clntjdestroy
Andre Asselin
08/08/94
Page 3
DB01
5T5* ^ 1 W mm ' m r m Vg a *i g"% s 2 as s
UD4'£. L.H I O UC I OIVlALL.
Dan S. Britton
IBM Canada
Database Technologies
Why_ Migrate to DB2 Cjjent/Server?
Price/Performance
b Processing power of workstations for low cost
■ Cost per transaction
■ LAN-based resource sharing
New Technology
is Newer, more robust OS, applications and tools
■ Approaching 24x7 availability of workstations
Platform Independence
■ Move work to less expensive, common platforms
« Move data to where needed
a Support of more "open" environments
Human Resources
» Utilize existing skills across multiple platforms
Dopyrqtit fd 1904 6M CorpjaiDo
lufuQUciion
When to Migrate to DB2 Cjjent/Server
Hardware
■ Pending processor upgrade or more DASD
■ Available workstation hardware
Software
a Significant new development of applications
■ End-user requirements
Financial
» Business case
« Market for applications on smaller, open platforms
GOTCHA!! ___
Systems Management
® Not all functions may be available on workstation
a Not all tools may be available on workstation
Skills and Resources
■ Technical skill needed to support LANs, workstations
Conversion Costs
■ Applications may need to be rewritten or redesigned
a Support of dual, multiple different platforms
■ Exploitation of each platform or support of all
Performance Requirements
a High end OLTP applications
* Centralized storage of data
a Continuous operations and high availability
CojjjrfJgbt fCJ 19M 6 M Corponttxi
Migration Considerations
Cooperative Processino Scenario
HOST
JD.”1
Terminal or
Host
\
1
/\
i
n^xvx ivXvx
m
i
L
WORKGROUP
Wth
/
LAN
I
CSent
Seiver
msm.
Client
Copyright fc| 1KMBM Corps a ton
Downsizing Scenario
Client
Where Should You Place The Data?
Performance Considerations
Factors to Consider
Factors to Consider
■ Performance
- I/O
■ Availability
* Network
■ Remote Data Manipulation
» Number of Users
a Security
® Utilities
■ Concurrency and Consistency
a Application Design
a Data Owner Preference
a Traditional Design Issues
® Skill and Experience of Support Personnel
■ Relational Software Constraints
Host Performance Issues
Client/Server Performance issues
Getting Database Design Correct
Network Performance
■ Logical Model Flexibility
■ 9.6KB vs. 56KB vs. 16M vs Fibre Optic
■ De-normalized Perfomance Gains
Number of Message Pairs per Transaction
Generating Efficient SQL
Performance Characteristics of Target Platform
Tuning Environment Parameters
Plus Traditional Design Issues
lSM 8M Ccrpo «Uon
Copyright (ci 19EM 6M Corpo*»tton
Design Techniques for Performance
Startup
b Retain connection between transactions
► Saver: message pairs
► Saves connection processing
► Server memory allocation for idle connect
SQL
■ Use Static SQL wherever practical
► Saves Dynamic Bind and aulh chocks
® Use blocking for all cursors
► SQL statement performance
► Saves a lot of network traffic
■ Avoid redundant SQL calls
■ Use Joins where possible
► DBMS oar; join more evidently than application
► Saves network traffic
Design Technigues for Performance _
SQL
■ Select only rows and columns that are needed
► SELECT * from 200 million row table is not good
® Use database Rl, instead of application Rl check
► Database Rl applies to ALL processes that use database
► Saves extra message pair
■ Consider local data copy for non-volatile reference data
b> Saves network traffic
* Use DARI
► Performance of server vs. client
► Saves network traffic
* Use Compound SQL (available in DB2/6000)
► Simple to code
► Saves network traffic
Security - Connectinct to the Database
Security - Access within the Database
Connection Considerations
Priviledges and Authorities
■ Consider Design and define security strategy
■ similar for DB2, DB2/2 and DB2/6000
*=> Platforms
■ CONTROL priviledge new for DB2/2 and DB2/6000
e** Existing or new applications
► Provides user wish control over DB objects
► Existing security standards
► ALL priviledges are provided
► Integration oi existing database environments
► Creator uripiic-i-y receives CONTROL pr-visecige
► Location oi data
► Revoke of CONTROL does net cascade
a UbfcRlU and PASSWORD required
» Revoke of GRANT priviledge in DB2 does cascade
^ DB2/2 uses User Prome Management
► UO/?.' O'A-'O C’SOS At A oO’-yiJi ::y Vyk-M nTo:
► DB2 uses RACE (or equivalent)
■ Mixed Environment
fv Coordination of USERID and PASSWORD a must
► Products like Signon Coordinator/?, help
Copyright (c) 1SW BM Corponton
CofyrJgm (ci t99< BM Cwpo«tDn
Backup and Recovery Considerations
Have a Backup and Recovery Plan
■ Procedures
■ Resources
Utilize product specific capabilities
* DB2/6000 (VI) - Online backup
■ DB2/2 (VI.2) - Quiesce Database
Utilize Roll forward capability
« Restore copy of backup and roll forward
Store backup and logs on a separate devices
■ Different hardfile
■ Different Server
■ Host
Sofyrigrit ,-ci 13M BM ~orpo«tbn
DB2
■ EBCDIC
DB2/2 and DB2/6000
* ASCII
Sort Order
* Collating is different
■ Use COLLATE parm of CREATE DATABASE
□DCS will handle conversions automatically
Differences in how data is physically stored
- In DB2
« In DB2/2 and DB2/6000
Data Migration - Roll Your Own
Data Migration - Bridge Fasthacj
Server
Data Migration - Too/s Summary
IBM Family...
■ DDCS
■ DB2 C/S Utilties (IMPORT and EXPORT)
■ DataHub
■ DataRefresher
» DataPropagator/Relational
...and Friends
■ Bridge Technology
■ Data Junction
■ DBAPort
■ Platinum Data Transport
■ Data Base Converter
a SQLAssist
DBMS Infrastructure
Database System Catalogs
■ SYSIBM as qualifier
h DB2/2 and DB2/6000 catalogs a subset of DB2
■ Use views to mask differences
Locking and Concurrency
■ DB2/2 and DB2/6000 have row-level locking
■ DB2 has page-level locking
» Isolation levels
► All support Cursor Stability and Repeatable? Read
► DB2/2 and 082/6000 support uncommitted read
Referential Integrity
■ Unique Index created for primary key
► Automatic for DB2/2 and DB2/SGQ0
► Manual (SQL) tor D82
Some DBMS Limits
Feature
DB2
DB2 C/S
■ Longest host identifier
64
30
« Max length VARCHAR
32704
4000
0 Max length VARGRAPHIC
16352
2000
■ Max columns in table
750
255
■ Max columns in view
750
255
® Max columns in index key
64
16
■ Max # host variables
storage
880
■ Max declared cursors
storage
400
Reference: FRED, Table 10
(SC26- 33
16)
SQL Considerations
SQL Considerations
Data Manipulation Language
SQLCODES
* Very similar across platforms
* Not consistent across platforms but similar
■ SAA SQL most similar
■ DDCS remaps SQLCODES
Data Definition Language
SQLSTATES
® DB2/2 and DB2/6000 almost identical
■ ANSI Standard
■ DB2 different from DB2/2 and DB2/6000
■ more general, but identical across platforms
■ Object names vary widely
Connect
Data Control Language
« All support SQL CONNECT AND CONNECT RESET
■ Same concepts across platforms
a DB2/2 and DB2/6000 support implicit connection
■ Differences in granularity of authority
« DB2/2 continues to support START/STOP command
i
Static SQL
* Better performance
■ Simpler to code
■ Fewer runtime authorization issues
- can be EXPLAINed
« Less network traffic
Dynamic
a Simplifies development environment
■ Removes Static SQL “fixed format” constraint
® Can use PUBLIC authorizations
DARI and CU
DARI
■ Database Application Remote Interface
■ "Stored Procedure"
* DLL if: OS/2
► Loadable Modi-la in AIX
■ Reduces network traffic on LAN
■ Gal! Level Interface
Precomgilation Considerations _
Qualifying Table Names
■ Use unqualified SQL in programs
■ DB2 supports Synonyms and Aliases, Bind Options
Can explicitly define ihe -able qualifier
* DB2/2 and 082/6000 do no! support these op-ions
» Create View in DB2/2 and DB2/8000
► Must be GRAMTed priviledge of base tables
Binding
» Objects must exist for prep on DB2/2 and DB2/6000
■ Bind during Prep or defer Bind
a DB2 can Bind with Owner=
■ DB2/2 and DB2/600Q do not support concept of Plans
► Packages can consist of multiple Plans
Copyright fC) 1904 BM Corporatbn
Program Pregaratign Steps
Copyright (o 1904 BM Corpoatbn
Deyelogment Tigs _
SQL
* Use SAA SQL
a Use unqualifed SQL
■ Use explicit CONNECT
Development Process
■ Create portable code modules
* Share modules where possible
® Use Rexx or shell scripts to change syntax
► BEG IN/END SQL vs. BEG! N/: SQL
■ Define naming standards
■ Private vs. Public build environments
■ Change Control
Copyright (C) 1904 BM Corpnatton
Managed Care and Employee Benefits
a Administrator accesses on-line information
Process requests
Various sources
Database detail
■ 500MB Database on Server
■ 110 OS/2 Clients
■ DDCS/2 attached to 8 of 14 DB2/MVS subsystems
HOST
Terminal or
Workstation
Hosl
Reasons for Downsizing
Performance
a Dramatically reduce "average speed to answer"
so Average response lime : 2 seconds
Cost
■ Attain reduction (80%) in CPU cost per call
Programming
* Utilize existing programming skills
■ DB2/2 synergy with existing DB2/MVS
Cost of Training new administrators
» Provide more intuitive GUI front end
a Decrease training time
6-8 weeks down to 2-3 weeks
Portability Issues
Telecommunications Company - Case Study
HOST
WORKGROUP
LAN
JQ~
Terminal or
Workstation
mmmm
-3888S8&
Client
Applications
Reasons for Downsizing
Cali Processing
Marketing of Application
■ Switching equipment feeds database
■ Few potential customers would need host capacity
■ Monthly billing runs are executed against database
a Migration to smaller platform needed
OLTP for Call Records
Performance
■ Data available to provide billing assistance
a All customers would need host level of performance
* User caiis to inquire about a particular call record
Cost
Billing operator pulls up cai! detail
► May or may not make change to database
■ Needed affordable solution for re-selling
Database Detail
Scalability
■ Utilized 4-6 gigabyte database
■ Customer wanted a scalable solution
■ 50 tables and approximately 4 million records
■ Ability to migrate to other platforms if needed
Programming
■ Eliminate/reduce dual maintenance
* Utilize existing programming skills
Portability Issues
References
JCL
■ Not supported on DB2/6000
« Necessary to write shell scripts to emulate JCL
SQL
- DML
s- DIGIT scalar function not supported
Had to write conversion routine
■ DDL
& Hod to vvtHo scripts to remove extensions
Utilities
■ No equivalent of DSNUTILB
5 - Had to write 2 process coavereion/load uliiity
Data Conversion
■ Utilized Data Junction and Bridge Fastload
DB2 C/S Family Downsizing Considerations Paper
■ Go to demo area of this event for a copy
* IBM: Request LIST from DB2INFO at TOROLAB2
FRED
* order # SC26-3316
SupportPacs
s Contact IBM for information
* (list in handout for DB2/2: Family & Friends)
Customer FTNs and videos
* List of FTNs and videos available from DB2INFO
■ Contact IBM
IF ALL ELSE FAILS:
* Call me
m v.0
« DB2/2 Available since May 1983
® DB2/6000 Available since November
1993
00 Independent
oftware vendors
DB2/2 Worldwide Salsa
80.000
: _
JK
40 000
w
-
m ..
ui JU Aug Sop Oct Nov Doc Jan FoD Mar |
® Regulatory Reporting
• 3 RS/6000 Servers Model 550
® Move Daily Updates from IMS to DB2/6000 using Bridge Fastload
® Perform Nightly, Weekly, Monthly Reporting to SEC
Benefits
• Smooth Migration from DB2/MVS
• Preserved Investment in DB2 Skills
• Improved Performance of Reporting Application
-
2/2 SERVER
DDCS/2
• Managed Care and Employee Benefits Application
® 500 MB Server
® 110 OS/2 Clients
m DDCS/2 active on 8 of 14 DB2/MVS subsystems
Benefits
• Dramatically Reduced "average speed to answer"
9 Training time decreased from 6-8 weeks to 2-3 weeks
• 80% reduction in CPU cost per call
® Average response time: 2 seconds
<§ DDCS/2 provides an architecturally clean, cost effective gateway
System
500 GB
nnan nnnn
ants Eianaa
Application
• Direct Marketing
©Target Market Identification
Objective
• Reduce Market Identification from 14 Hours to
15 Minutes
® Analyze Entire Market
PQWERPara!!e!/DB2
64 Nodes
900GB of Data
-— — -- -- - -—■— -——— agj
® DB2/400 ~
m Functions
• DB2/2 VI .2
« DB2 Client Enabler VI .2
* iUUi.W.;
® DB2 For HP-UX and DB2 for Solaris
*'* •” v: v: ’ ■■■
m DB2 V2 For OS/2 and AIX
............... ^
® DB2 Parallel Edition for Power Parallel
... p-xno^r:::;^
® Visual izer
TV •
# Datahub
* DataPropagator
m Tradewinds
@ Available 08/94
_
Availability
e> Increased Granularity for Backup
Restore
Performance/Scalability
® Enhanced Media Spanning
• Hyper Load
© SMP Exploitation
m STAR BURST Optimizer
• Parallel Database
SQL Functionality
9 OO Extensions (BLOBs, UDFs, UDTs)
® Triggers
® SQL 2
@ More DB2 Compatibility
Connectivity
® DRDA DUOW (Two-Phase
Commit)
® DRDA Application Server
Support
m Replication Services
9 IPX/SPX
Open Standards Support
9 DCE
® XA Enhancements
9 Call Level Interface (ODBC, CLI)
DBA Tools
• Visual Explain
• Performance Monitor
9> Select, Insert, Update, Delete
► Aggregate Functions
► Index Scan, Table Scan
► Sorts, Joins
b* Table Create, Data Load, Index Create, Runstats, Reorganization
&>Node Rebalancing, Backup/Restore, Forward Recovery
8» Scaleable PowerParallel SP1, SP2
LAN connected RISC/6000, PowerClusters, HACMP
* Pricinq - Node and User based
® Persona! Application System, Query/6000,
Tradewinds
m VisualAge
m c/3
# Toois to monitor status, display objects, copy objects
$ Mask RDBMS Differences where Desirable
$ Provide Consistent Graphical User Interface
IBM Devekwnr ir^nxmts -^
» Significant investment m Many Key Areas
@ r’enorrnance
« More object support
* Increased storage limits
® Additional SQL Enhancements
® Concurrent release on all platforn
* SQL
► FIPS
► ANSI
► ISO
• DCE
® Call-Level Interface
* Datahub enhancements
► Adminstration
► Copy Management
► Data Replication
$ Continue focus on DBS v
w System fvianaQemont
® Database Administration
• DBA Tools
BRIDGE/MONITOR for DB2/6000
Osrm2 Performance and Capacity System
DataHub
ProductManager/6000
ProSoft
RemoteControl/2
DBEditor
Information Engineering Facility
PM/FOCUS
Speedware/Designer
TechBridge Builder
VISION/4GL
WINDOW/4GL
Bndge/Fastload
Data Hub
DBAPort
Platinum Data Transport
Software Reengineering Tool
The Data Base Converter
ANSWER :ZIM
Data lens
DBEditor
Distributed Application Environment
GM l/AGS Solution
Metaphor Data Interpretation System
OEC Toolkit
PowerBuilder
ProductManager/6000
Forest & Trees
Impromptu 2.0 C
InfoPump
iXOS - Framemerger
iXVIEW/SQL
Metaphor Data Interpretation System
Micro Focus Host Compatibilty Option
Personal Application System/2
PLATEAU - dynamic DB
PM/FOCUS
PowerBuilder
ProductManager/6000
Q+E Database Library
Query/6000
Quest
ReportSmith
SAS/ACCESS Interface
Select Executive
SEQUELINK
Speedware/4GL
SQL Objects ++ Database Class Library
SQLAssist
TechBridge Builder
VISION/4GL
WINDOWS/4GL
XDB-QMT
4S-Report
Data Hub
Micro Focus Host Compatibility Option
Remote Control/2
SQLAssist
DB2/2 trends
@ Development Tools ^fr
DataHub
DBAPort
Data Asset Manager - Data Adminstration
Distributed Application Environment
Database Application Framework Class Library
OASAS 1 for OS/2 Version 2.0
Development Asset Manager - CASE Tool Integration
RemoteControl/2
Information Engineering Facility
INNOVATOR
DataHub
PACBASE Series
PI ATFAU - Anness Control Svstem
IVUCOi f~UUUc> / /udt LA,// / ij~/cUiUniiy
RemoteControl/2
PLATEAU - Application Development Platform
SQLAssist
PLATEAU - dynamicDB
PLATEAU - Message Handling System
PLATEAU - OOTDI
PM/FOCUS
Strategic Asset Manager - Enterprise Analysis
WATCOM FORTRAN 77 32
WATCOM VX*REXX
Database Application Framework Class Library
DBAPrep
DBATool
Information Engineering Facility
INNOVATOR
JCL Navigator
KASE : VIP for Presentation Manager
Legacy Asset Manager - COBOL reverse Engineering
Micro Focus COBOL Workbench
Micro Focus Host Compatibility Option
Open + Engine
PACBASE Series
PLATEAU - Application Development Platform
PM/FOCUS
Super NOV A
Uniface
WordPerfect InForms
AM (Applications Manager)
AM SQL/Workbench
ANSWER :ZIM
Database Application Framework Class Library
Distributed Application Environment
iXOS - Framemerger
PACBASE Series
PLATEAU - Application Development Platform
PowerBuilder
Query/6000
SQLWindows
Super NOVA
TechBridge Builder
The SAS System
Uniface
Visual Age
WATCOM FORTRAN 77 32
WATCOM VX*REXX
4S-Report
ANSWER :ZIM
Database Application Framework Class Library
Open + Engine
PLATEAU - OOTDI
PowerBuilder
ProductManager/6000
Speedware/Designer
SQLWindows
SuperNOVA
TechBridge Builder
PACBASE Series
Platinum SQL-EaseAA/orkstation
PowerBuilder
Speedware/Designer
Speedware/4 GL
SQLWindows
SuperNOVA
TechBridge Builder
The SAS System
Uniface
VISION/4GL
VisualAge
Vortex
WATCOM FORTRAN 77 32
WATCOM VX*REXX
WINDOWS/4GL
VisualAge
WATCOM FORTRAN 77 32
WATCOM VX*REXX
WordPerfect In Forms
4S-Report
AM (Applications Manager)
AM SQL/Workbench
ANSWER :ZIM
Commander ADL
Database Application Framework Class Library
Information Engineering Facility
JAM Family of Development Tools
Natural for DB2
NOMAD for Extended
NOMAD for OS/2
YC-Extract
CLIO
Query/6000
VISION/4GL
WordPerfect InForms
APMpower Application Performance Analysis System
EZ-FILES for CICS
Micro Focus COBOL Workbench
Micro Focus Host Compatibility Option
Platinum SQL-Ease/Workstation
ProductManager/6000
SQLWindows
Testing Made Easy
Com Trac
ControlFirst
CustomerFirst
Manage-it
ProSoft
APMpower Application Performance Analysis System
CMVC/6000 V2R2
Distributed Application Environment
information r-ngi r ;e nnng ~Sunny
i t\if y/O v'ATGR
Legacy Asset Manager - COBOL Reverse Engineering
Personal Application System/2
Speedware/Designer
SQSLWindows
Super NOVA
Uniface
VisualAge
@ Cross Industry Applications
Commander Desktop
ComTrac
Crystal Reports for DB2/2
Datalens
EasyReporter
Forest & Trees
iKjtcy _ Trsri^ Plnanr'd P.ankinn hi'crpm
International Me
IXVIEW/SQL
101/ ii/iono/iomnnf Ci/pram
1 jr <"< 5 * . r
Metaphor Data Interpretation System
OpenBooks
Osrm2 Performance and Capacity System
Personal Application Systems/2
POWERMAP
ProSoft
Quantum Leap
Query/6000
Select Executive
Student Advisement - Graduation Audit
The SAS System
4S-Report
TRACK
CLIQ
Datalens
iXOS - Framemerger
PAB/2
PAB/2 Advanced
T.O.E.S./2
The SAS System
Time and Place/2
CLIQ
Datalens
The SAS System
CLIQ
PM/FOCUS
VisualAge
WINDOWS/4GL
CICS OS/2, CICS/6000
Distributed Application Environment
Tuxedo
• industry Specific Applications
A..... ..
PeopleSoft Financials
Falcon Credit Card Fraud Control System
PeopleSoft HRMS
IBM SAA Consumer Transaction Runtime/2 Version 2
TARABS
IMEX - Trade Finance Banking System
International Money Management System
ComTrac
Lending Advisor
ProSoft
PLATEAU - Access Control System
VE
PLATEAU - Application Development Platform
PressLine
Series III
D-Tech SCAD A Event Management System
TARABS
FACTOR/AIM
Underwriting Advisor
PeopleSoft Financials
ACX Archivi Base Contabilita
ACX Magazzino Contabile
ACX Vendite
CompuServe: DB2VEND file in OS2DEV2 Forum
internet: Note requesting to thbeyer.vnet.ibm.com
IBM: Request DB2VEND from DB2INFO at TOROLAB2
IBM: DB2VEND on MKTTOOLS
Call: 416-448-2514
DB03
Data Access
Services
ADSTAR Distributed
srsMxam
CIsent/Server Environment
Products
► OS/2 Client System
- ADSM Data Access Services (SK2T-8706)
- Record Level S/O (VSAM/2 aka RLSO)
- Distributed FileManager (DFM/2)
► MVS/ESA Server System
- Generally Available 6/94
- MVS/SP 4.3 or 5.1.0
- MVS/DFSMS 1.2.0
- VTAM
- Appropriate Security Package
► OS/400 Client/Server System
dssrrr/3O02 Copyright iBM Corporation t993,1994 sr/a/3/i&&4
Topics
► Environment
► Data Access Services
► Distributed FileManager/MVS
► Proof of Concept Demonstration
- C Appiicatlon with a PM Graphical User
Interface
- Visual PL/I for OS/2 Sample Application
- Microfocus COBOL 32 Bit Application
- Access to AS/400 and ES/9000
dasnr/shOI ^ Copyright iBM Corporation 1991,1994 ava/3/tSS4
desmvsOOJ
^ Copyright iBM Corporation 1993,1994
svs/3/ldm
Transparent File Access
Adherence to existing and emerging industry standards
Maintaining data integrity and sac ' Y Client'server
7s endar ’*ult h
T„ _„ 0 ,,—^
an<i update to dats daCcess
lnfi7Si eXiStir,S TcjS Cc
55SS4SK«»
the enterprise
d*tssrr/s006
C Copyright iBM Corporation 199.3,1994
3-ss/s/tam
Distributed System Evolution
TRENDS: Enterprise
° Expanding role of the workstation
® Emergence of workgroup computing
® Mission critical data on the workstation
Enables competitive advantage
OssmisCOi ^ Copyright iBM Coiporrtiep IP93, !'>M &rs/3J\dm
Customer Concerns
► Applications are typically not portable
► Applications are unable to access mainframe
resources
Copyright iBM Corporation 1993,1994
dasmvs997
svswtam
Data Access Services
Environment
dtsmvsOOS Copyright iBM Corporation 1983,1994 svs/3/ISM
Data Access Services
Components
► OS/2 Record Level Input/Output
- Record Level Access Method
- Interface for local and remote access
► Distributed FSSeManager/2 for OS/2
- DDM Architecture Implementation for Clients
- Initiate requests for remote data access
- Source Capability
(teanvsWi) ^ Copyright iBM Corporation IMS, ISM svs&iam
Data Access Services
Client Server Structure
OS/2 2.x CUent(Source) System
Application Program
Record Fite
LDMI (VSAM/2)
DFM/2 Client
J _
Remote
Remote
Record |
Stream
Record
File
Access
Access
LDM
Support
Support
-s-
Server (Target) System
DFM Server j
J Target LDMI j
j | Target LDM
Communications Remote
Manager [ F,le
Data Access Services
Record Level Snput/Output (VSAM/2)
Record Appf Pgn
VSAM/2 Router
. I .
Record I/O to
Byte Mapper
Source 1 LU ^ LU 1 Source
DDM 1 6.2 < - J ^ 6.2 JdDM
Local Data Management
. V .
Local Data ft
Distributed Data Access
Copyright iBM Corporation ISS3, ISM
^ Copyright iBM Corporation ISSS ISM
Data Access Services
OS/2 System Structure
dsssrr/sOI3 ^ Copyright iBMCorporafon 1*33,1994 sr/s/3/t&94
Data Access Services
VSAM/2 Application Program Interfaces
* Fite Creation
- DDMCreateRecFile
- DDMCreateAltlndex
► Fite Processing
- DDMOpeti, DDMCIose, DDMDelete
- DDMCopyFIte, DDMRename
► File Updates
- DDMInsertRecEof, DDMInsertRecKey
- DDMfnsertRecNum, DDMLoadFiieFirst/Next
dssnrtsOto
^ Copyright iBM Corporation 1993,1994
SVS/3/I&94
Data Access Client Server Environment
Data Access Services
VSAM/2 Application Program Interfaces (Contd.)
File Location
- DDMSetBof, DDMSetEof, DDMSetFirst,
DDMSet Last
- DDMSetPrevious, DDMSetNext, DDMSetMinus
- DDMSetPlus, DDMSetKey, DDMSetKeyFirst
- DDMSetKeyLast, DDMSetKeyLimits,
DDMSetKeyNext
- DDMSetKeyPrevious, DDMSetNextKeyEqua!
► Record Retrieval
- DDMGetRec, DDMUnloadFileFsrst/Next
► File Attributes
- DDMQueryFilePath, DDMSetFile/Path
^c) Copyright iBM Corporation {993,1994 srs/3/{8/94
dasmvsOIS
Data Access Services
Automatic Data Conversion
Data Access Services
A Data Language
► Two Data Translation Flies
- Base Sequence
► Description of record file on remote system
- View Sequence
► Description of workstation's view of remote
file
► Transiation of the two flies
- ADL Translation Utility (ADLTRANS)
- DFM/2 Start up Time
► File Descriptor Map in CONF1G.DFM
► Activation when STRTDFMR is used
dasmvsOia ^ Copyright iBM Corporation 1993, 1394 svs/3Sia/94
Distributed Data Access to MVS Data
OS/2 MVS/ESA
dssmvs020
C Copyright iBM Corporation 1393,1934
srjx/3/iam
Transparent Access to MVS Data
Distributed FileManager/MVS
Data Set Access
► Data Set types with ail access capabilities
- IGF Catalogued
- System Managed
► SAM
► ESDS
► KSDS
► BIRDS
► VRRDS
- POSE Member
ttesnr/s022
0) Copyright iBM Corporation 1993,1994
sYstf/tdm
What is Data Access In MVS
► Access Capabilities
- Create
- Delete
- Read
- Write
- Clear
- Rename
- Positioning Functions
- LSTFAT (List File Attributes)
- CHGFAT (Change File Attributes)
- Locking
2?f 0 Copyright iBM Corporation 1993,1994 svs/.3Zta/94
MVS Data Set Access, (cont'd)
► Data set types with limited access capabilities
- Non-System Managed: no create, no CHGFAT
► SAM
► ESDS
► KSDS
* RRDS
- VRRDS
- PDSE: Implicit create only with member create
dastnvs023
0 Copyright iBM Corporation 1993,1994
svs/3/13/94
MVS Data Set Access, (cont'd)
‘Data Set Access Direction
► Data set types with no access capabilities:
- Data sets not ICF catalogued
- PDS members, PDS*
- LDS
- GDG
- IBDAM
- ISAM
Full access capability
- PDS members of preexistent PDS
- Alternate indexes (create/delete new paths)
- Open Edition (HFS)
destrrrs024
Copyright iBM Corporation 1993,1994
s-/s/3/1d/94
dasmvs025
^ Copyright iBM Corporation 1993,1994
arrs&ldm
MVS Data Set Requirements
► ASS Datasets ACCESSED must be ICF
catalogued
► Ail new datasets CREATED are System
Managed
► Byte Stream flies can only be CREATED as
PDSE members
OS/2 Data Access Services Value
► Eliminate Duplicate Data Requirements
► Improve Data Integrity
► improve Data Protection
► Flexible Deployment of Data and Applications
► improve Load Balancing
^ Copyright iBM Corporation 1993,1994
srsW1W4
ctassnvsCe?
^ Copyright iBM Corporation 1993,1394
svs/3/13/94
DFSMS DFM Target
DFSMS/MVS 1,2.0 Distributed FiieManager SC26-4915
Guide & Reference
DFSMS/MVS Distributed FiieManager/MVS GG24-4403
(Red Book)
C Copyright iBM CorpavSon /.*«, l&M
s-rs/.mzm
LAN NetView Management Utilities for OS/2
(LMU)
Lori Bush
LMU Technical Marketing
Research Triangle Park, NC
IBM Networking Systems
0 Copyright IBM Corporation, 1994
LAN Management Headaches
==&
You need to shutdown and reboot a remote server,
Overview
NOVELL
Server
TR/Ethernet Support
Hierarchical Concept
Managing Systems
Managed Systems
Management
Operations
Configuration
Performance
Fault
DOS/WINDOWS 3.1
IBM Networking Systems
0 Copyright IBM Corporation. 1994
Concepts
IBM Networking Systems
0 Copyright IBM Corporation. 1994
LMU
Operations Management
• Graphical Display
Status at a giance
Easy to identify icons
• Remote Command Execution
Command Line
OS/2, NetWare Server, DOS/Windows 3.1
« Remote Shutdown and Reboot
Timed Reboot
• Job Scheduler
Schedule commands daily, weekly, one-time
• Phone Pager Support
IBM Networking Systems
0 Copyright IBM Corporation. 1994
LMU
Configuration Management
Collect Vital Product Data
QUERYVPD, QDOSVPD
Display, hard drive, TR address, Processor, Hardware and Software
Dynamic and Up-to-Date
• Send Data to Central OS/2 Database
Reports, Helpdesk
/
Configuration Change Log
Detects changes to Hardware and Software
Generate Alert on
Configuration Change
IBM Networking Systems
0 Copyright IBM Corporation. 1994
LMU
Performance Management
ect Performance Data in OS/2 I
■ OS/2 System Performance
(Uses SPM/2)
■ NetWare Server Performance
(Uses SS.NLM)
■ NetWare Server volume Information
t on User Defin '
a OS/2 System Perf
a NetBIOS Adapter Perf
■ IBM LAN Server
■ NetWare Server
■ IPX/SPX Network Statistics
■ IPX Layer Statistic
® NetWare Server Volume
■ Token-Ring Utilization
AND MORE
IBM Networking Systems
© Copyright IBM Corporation, 1994
Fault Management
• Heartbeat Monitor
Managed Systems - Managing System
Pulse
• Create Virus Alert
• Monitor Critical Applications & Alert
» Create Software Generic Alerts
• Automated Recovery from Alerts
* Alerts to:
NetView/390
NetView/6000
NetView for OS/2
LAN Network Manager
M an
NetView/390
V'.-’ NatView for AiX $
NetView for OS/2
LMU Managing
l System
Clients and Servers
'X
IBM Networking Systems
© Copyright IBM Corporation. 1994
SUMP Sub Agent or Proxy
• Access LMU Database via MIB
500+ Variables
« Remote Commands to LMU-
• Managed Stations
Command line
• Map Alerts to Traps
• NetView for OS/2
Integrated into topology
LMU-Managed
Systems
NetView for AIX
NetView for OS/2
SNMP
; LMU Manager with
* SNMP Sub Agent
OS/2 LAN
Server
DOS/WINDOWS 3.1
IBM Networking Systems
0 Copyright IBM Corporation. 1994
LMU/6000 -Fully Integrated with NetView/6000
- Topology merged and correlated
- System status at-a-glance
- Easy-to-ldentify icons
- Define your span of control
- Extensive toolset
- Integrated with other applications
- LMU events
IBM Networking Systems
0 Copyright IBM Corporation. 1994
LMU
LMU with NetView for OS/2
• LMU as an application
LMU Managed Stations Integrated on
NetView for OS/2 Topology
• Traps/Alerts sent to NetView for OS/2
Event Display
• Remote Commands to
• LMU Managed systems
• Automation via NetView for OS/2
NetView for OS/2
LMU Manager with
I SNMP Sub Agent
apple fgm
MACINTOSH
DOS/WINDOWS 3.11
NetBIOS or IPX
OS/2 LAN
Server
IBM Networking Systems
0 Copyright IBM Corporation. 1994
What Can LMU Manage?
OS/2 2.X
LAN
Requester
OS/2 2.X
NetWare
Requester
OS/2 1.3
NetWare
Requester
OS/2 1.3
LAN
Requester
Windows
LAN
Requester
Windows
NetWare
Requester
Macintosh tm
NetWare
Requester
DOS
LAN
Requester
DOS
NetWare
Requester
LMU
Managing
Station
IBM Networking Systems
0 Copyright IBM Corporation, 1994
« Multiple Branch Offices
No local expertise
« Central Management
Net View/390, or NetView/6000
• Remote Distributed LANs
WAN Connectivity - NetView/390
TCP/IP Connectivity - NetView for AIX
IBM Networking Systems
© Copyright IBM Corporation. 1994
LMU
Fault Management Scenario
• Joe's Workstation
Joe likes Golf
Joe plays golf PC game from home
Joe loads Virus on Machine — Bad Joe!
Joe infects his machine!
Joe logs onto LAN Server
• LAN Administrator
Knows about Viruses
Runs virus detection programs
Forces virus detection - PROFILE.CMD
• Scenario
Joe logs on to LAN
Force virus detection
Virus Alert to Managing Station
Automatic Recovery
POP UP to Joe -" Bad Joe"
Page LAN Admin
Send alert to LNM, disable port
Alert to NetView for OS/2
IBM Networking Systems
© Copyright IBM Corporation. 1994
LMU
LAN NetView Management Utilities for OS/2
LAN Management Isn't Just About Detecting Problems,
It's About Preventing Them..........
Easy to Use Graphical Interface
Dynamic Asset Inventory
Realtime Problem Detection
Unattended Automatic Recovery
Remote Operations
Powerful Scheduling Facility
For Your IBM and Novell LANs
...All from Your Desktop
Managing a World of Difference!
IBM Networking Systems
(c) Copyright IBM Corporation, 1994
LMU
Trademarks
• Novell, IPX and NetWare are trademarks of Novell, Inc.
• Microsoft Windows is a trademark of Microsoft, Inc.
• UNIX is a trademark of UNIX Systems Laboratories
• Apple and Macintosh are trademarks of Apple
Computer, Inc.
• RISC System/6000, AIX, NetView, and OS/2 are trademarks
of International Business Machines Corporation
IBM Networking Systems
© Copyright IBM Corporation, 1994
LMU
DM03
introduction
IBM Software Management
Configuration, installation and Distribution
(CID)
► Customer Environment
► Software Administration Challenges
► Software Administration Requirements
Some Solutions
► The cio Solution
► IBM Software Management Tools ^
► CID Product Enablement/Cost
► Benefits of CID <
► IBM CID Strategy
|
1
Alan Higginbotham
Sr. Programmer - Manager
Austin, TX
_f if
m
Customer Environment
► Networks more prevalent
imk + _
- Downsizing /Connecting
- Server-based ( Tl
:-Q
Size of LANs increasing
► Less knowledgeable users
► Applications more complex
► Increasing administrator skills required
► Upward pressure on administration cost
*
_ Software Administration Challenges
► LAN connected vs. standalone
► Multitude of software configurations across the
organization
► Centralized software control
“Version / Fixes
“ License management
► Mission critical applications
^Software responsibility Increasing
- Installation
- Apply Updates / Fixes
► Loss of control
► Eliminate end user involvement |g
- Diskettes Jf
- End-User questions » 1 |
-Configuration changes 11
- Complexity |||1
► Remote unattended processes
► Consolidate administration
-Central or distributed location
► Easy administration
► Enforce program license agreements
► Software inventory
Current Solution Options
► Customer Environment
► Software Administration Challenges
► Software Administration Requirements
► Some Solutions i—
► The CID Solution l|i
► IBM Software Management Tools
► CID Product Enablement/Cost
► Benefits of CID
► IBM CID Strategy
Replication
Scripts/Proeedures
^Allows for some personalization
^Administrator setup time consuming
^Potential for hangs
- Unexpected error messages
- Sensitive to target hardware
► US changes require re=scripting
► Language-specif ic
► Minimal product knowledge required
► Allows for client level personalization
► Updates / new product features handled automatically
► Migrate personalized configurations
► Allows push or pull of applications
The C1D Solution
► Remote, unattended installation/configuration
- ClD-enabled installation/configuration program
“Application files on code server
- Response file
► Handles unexpected installation/configuration errors
► Tracks completion status
©
C1D Install Response File
► Is a flat ASCII file
► Format is KEYWORD = VALUE
► Allows response file nesting
► Allows for comment lines
► Recommended aids
- Sample response files
- Installation generated response files
► Consistency recommended for benefit of
administrator
Client Execution Environments
► Code server products
-NetworkTransport Services/2 - LCU
-NetView DM/2
“NetView DM/6000
- NetView DM for NetWare
^Administration products
“NetView DM/MVS
“NetView DM/2
“NetView DM/6000
-Software Profile Management Facility
-LAN Automated Distribution/2
Application enablement
- Software Installer for OS/2
- Software Installer for Windows
► initial install & configuration
► Product fixes
► Delta feature / configuration changes
► Migration of personalized parameters
across product versions
► Product removal
► Customer Environment
► Software Administration Challenges
► Software Administration Requirements
► Some Solutions
► The CID Solution m
► IBM Software Management Tools H
► CiD Product Enablement Cost
► Benefits of CID
► IBM CID Strategy
CID with Software Installer
■ Costs with SI
- Rang©
f / /■ .•••, \ \
- Function of installation complexity
■ Simple case
= Complex case
-SI handles all required dialogs
- Vendor provides additional
-SI handles all required
dialogs
configuration updates
-Vendor provides
-Vendor provides the SI package,
product-specific configuration
etc. files
file management
-1 person-day
-Vendor provides user exit
routines for additional functions
-3 or more person months
CID Enablement Costs
a Typical install/config. - 5 KLOC
10%
■ CID delta: 100-1000 LOC
- Command line parameters
W \
- Response files j
W |
^Comprehensive message logging \ base j :
“Handle locked files \ "
/■'/
- Uninstall
-Set up code server
*
_ C1D Enablement Benefits
■ Customer Satisfaction
a Greater access to enterprise market
■ Greater control over installation
a Fewer support calls on ’’Home grown" install processes
a Automated code fixes
a Administrator productivity improvements
a Non-disruptive to user
CID Productivity Improvement
OPERATING SYSTEM. LAN RF.Q., OB REQ., 3270 FUNCTIONS
IBM OS/2 2.0 Environment
Data For Each Workstation
W&M
|||i|i
mm
WMXZ
; Trial
ipl
iiiii i
!$$$;$
!!§ |$:g|;
iliil
WM
mil
i$$j$|
1111
ilillli;
Tint*
\
t5i* j
llllll
w* ■
* Data Assumes Ec&icated Installer
IBM OS/2 2.0 Boot Initiated Installation
Dais For Thirty Workstations
WM
iliil:
l$ssi
iiiiiii
Ilillli!
Paptete f Question j
1 If Prompted For Workstation Name
CID Works!
► Compute center
-"CID is a fundamental part of our software distribution strategy," Mike Dove; >100K PC's
per year
HSSC-SER (internal IBM)
“Significant savings of dollars, people and time over manual installs
► Union Gas of Canada
-"CID installs are done without a hitch; almost never have a problem"
“’The CID process is a godsend"
-"Can't imagine installing without CID" Chuck Dunn
► Lockheed Space Operations Co.
-The CID process has practically eliminated the consistency problem"
-"We no longer have to keep multiple hard drives set aside for multiple configurations."
Gary Ragan
► Security Life
-Significant savings (time) to configure the end users workstations (OS/2 workstations)."
Norm Naes
► Northwest Pipeline
-"CID allows us to load LAN Server 3.0 server (to) a clean disk in about 45 minutes. The
process would otherwise take about 4 or 5 hours." Dean Gianville
► An American airline
-Went from 12 people to 1 person for upcpade of 300 workstations
■ CID is a strategic architecture
H Easier software management in
distributed environments
a Dramatic productivity improvements
■ CID offers advantages over other
software distribution technologies
■ IBM is committed to making CSD an
industry standard for software
management
s Continue to deliver and
enhance a complete set of
Software Management Tools
B CID enable most personal
computer programs
8 Encourage industry
participation
a Extend CID to other platforms
* Provide CID verification
through LAN Systems "Tested
and Approved" program
Distribution Challenges
NetView Distribution Manager
Product Family
Basic
Denise Barlock
IBM
Research Triangle Park, NC
Increase User Productivity
Reduce Support Cost
Manage a Diverse
Environment
Requirement Areas
Distribution Elements
Package
Preparation
Distribution Options
Sneakemet
Replication
e- & •©- e e -e-
• is n s§ ® is
Iliiil
■O’ *©■ *©- *©* -©*
f l 11 i i
If If I
c . Replication Aid
■Sneakfimer^ w
► Reduce Replication Effort
- Windows
- DOS
- OS/2
► Capture Modifications
- Configuration
- Package Files
► Creates Replication Input
~ Update Configuration
DiskCamera
Before Install After
Application
CSD
Instaiip
Configuration Installation Distribution
a Remote
■ Unattended
NetView DM
Server
NetView DM
Agent
► AIX Software Installation
Method
► Vendor Supplied Images
* NetView DM/6000 Invokes
Instaiip
► Software Status
- ODM
- NetView DM/6000 Catalog
Distribution Environment
Distribution Today
► Choice of Management
Platform
► C!D Support
► 3174 Level C Support
► Enhanced Replication
Utilities
Disk Space Checking
► Coreq Checking
► Unique File Management
Rollback Scenario
IMefView DM
Server
install with Removability
install Mew Files .-.
iater„„
Remove .. .
Restore Back up Files
NetView DM
Agent
IMefView DM for NetWare VI *0
► Choice of Management
Platform
Push and Pull
*- Logical Grouping of Clients
for Change
► CID Support
Prereq/Coreq Checking
► File Retrieval from Client
NetView DM/6000 VI .1
Choice of Management
Platform
Push and Pull
Logical Grouping of Clients
for Change
Installp and CID Support
Prereq/Coreq Checking
File Retrieval from Client
Interoperability with NetView
6000
NetView DW/R000
Setver AIX Agent
OS/2 Agent Windows Agent
Benefits of Today's Solution
Increased Productivity
- Better Skill Use
- Timely Updates
Reduced Support Cost
- Automated
- Unattended
- Skills Leveraged
Diverse Environment
- Multi-Platform
- Multi-Protocol
Distribution Directions
Me?View DM/2
MetVtew DW 600 D
NstVtew DM tor Ms? Wans
Distribution Challenges
NetView Distribution Manager
Product Family
Advanced
Lynn Percival
IBM
Research Triangle Park, NC
► Increase User Productivity
► Reduce Support Cost
► Manage a Diverse
Environment
Requirement Areas
Distribution Elements
Package
Preparation
Distribution Option;
Sneaker net
Replication
■©■ e a- ■©■ «■ a-
ilKiKII
KmmKKK
CID for DOS and OS/2 Unstallp for A!X
Configuration InstaSSation Distribution
■ Remote
■ Unattended
NetView DM NetView DM
Server Agent
Replication Aid
► Reduce Replication Effort
- Windows
- DOS
- OS/2
► Capture Modifications
- Configuration
- Package Files
► Creates Replication Input
- Update Configuration
DiskGamera
* AIX Software Installation
Method
* Vendor Supplied Images
► NetView DM/6000 Invokes
Instailp
Software Status
- ODM
- NetView DM/6000 Catalog
Distribution Environment
Distribution Today
> Centra! Administration
- Servers and Clients
- Other Node Types
* Fan Out Distribution
* Host API's
► Dynamic Network Change
Improved I/O Performance
* Enhanced Usability
- Plan Sharing
- IOF Message Viewing
NetView DM/MVS
RISC/6000 3174 Others Agent
Software Profiling with SPMF
NetView DM/2 ¥2.1
> Choice of Management
Platform
C1D Support
► 3174 Level C Support
> Enhanced Replication
Utilities
► Disk Space Checking
* Coreq Checking
Unique File Management
Software Profile Management Facility
► Manages by Workstation
Function
> Simplifies Enterprise
Distribution
- Manages Groups
- Identifies Software
- Dynamically Selects
Workstations
- Schedules
- Automatically Builds and
Submits Plans
- Tracks Status
- DB2 Database
SPMF
NetView DM/MVS
Rollback Scenario
NetVIew DM/6000 VI .1
► Choice of Management
Platform
► Push and Puli
► Logical Grouping of Clients
for Change
► Instalip and CID Support
& Prereq/Coreq Checking
► File Retrieval from Client
Interoperability with NeiView
6000
OS/2 Agen i Windows Agent
Benefits of Today's Solution
► Increased Productivity
- Better Skill Use
- Timely Updates
► Reduced Support Cost
- Automated
- Unattended
- Skills Leveraged
► Diverse Environment
- Multi-Platform
- Multi-Protocol
Net View DM for NetWare VI. 0
s- Choice of Management
Platform
*> Push and Pull
^ Logical Grouping of Clients
for Change
► CID Support
p Prereq/Corsq Checking
j- File Retrieval from Client
Distribution Directions
NatVtowDM/2
NotV Saw DM/6000
NatVSow DM tor NetWare
Standards Conformance
► Activities
- POS1X
- DC E/D ME
► Accepted Standards
- Change Management
Architecture
- System View
- DC E/D ME
- POSIX
GP01
v introduction to Desktop Conferencing
✓ Applications of Conferencing technology
✓ Person to Person Product Overview
«/ Connectivity Features
«/ Application Features
✓ Future Directions
Because You Can’t Be Everywhere.,
in tits document to IBM products mo trademarks or registered trademarks of International Business Machines Corporation. All
other products are trademarks or registered trademarks of their respective companies.
SBftS Person to Person
Desktop Conferencing:
A Simple Definition
'People... f
in different places working together,
sharing Information and Interacting
In real time using computers."
Communications Evolution
to Desktop Conferencing
SBM Person to Person)
IBM Person to Person R1.0.3 '
Desktop Videoconferencing Systems yr 19
IBM Person to Person R1.01993
IBM Person to Person PRPQ ^gg 2
Document Databases (Notes) y
/1990
E-Mail systems Q 33
Local Area Networks^/l986 ps ^
Terminal emulation y 1984 IBM PC AT
Line-mode Async /^982 IBM PC
IBM! Person to Person
PS/VP,
ThinkPad
GP01-1
IBM Conferencing Products
T
Sam® Different
Time Time
Same
Place
Different
Place
Meeting
Support
Software
Bulletin
Board
IBM
Person
to
Person
E-Mail,
Databases,
Forums
IBM Person to Person
Person to Person Application:
Remote Presentations
Presenters can reach remote
audiences without traveling,
and can share graphics,
images, text, and video.
BBM Person
Feedback can be
immediate and
interactive
GP01-2
to Person
gw Tim© later
Desktop Conferencings
Another Dimension - Focus
Person to Person Application:
Help Desk
Help Desk personnel can
quickly solve users' problems
by viewing data files and
application window contents,
They can also update or
refresh files on the user’s
systems when needed.
Person to Person Application;
8B&0 Person to
Distance Learning
have real time access to a
picture of the problem.
GP01-3
Person to Person Application;
Remote Problem Resolution
Make effective use of a few experts
by providing them electronically
. to many other locations.
Person to Person
Product Overview
;§1 ^ : Feate res;- ■ ■ : ' : ■' • ; ; i ' :
Q
H flli
ARIA '•
■ M.IHM . "• Jsf?’ '
1! i : !!!!!’! i'i i'i i i
mmmm
: iilirarsstsr: if: : : if: i
j: : j : : j:j'j-:; -1::‘jL;RaW«S^:nOiEf :
:ifiillgiifffif:: fi::: . 1
Conference Control: lU
:
% m I
|
Calf Address |||
ttstten Sa«# '
Manager Book
w* «*»» -
IBM Person to Person
Person to Person Connectivity
"Multi-Every thing "
TCP/IP
♦-
TCP/IP
Person to Person is
Up to 8 People
in One Shared
NetE
mm
IIOS
NetE
JIOS
to
ASYNC
ftanforAnr%<
OS/2,
Windows
NetBIOS w
SPX TCP/IP
Async OS/2, As y nc
, tcp/ip Windows
ISDN !SDN
SNA
SNA
ISDN
m
Direct Peer to Peer Calling: No Server needed
Multiple-Way Calling: Up to 8 participants
Multiple Protocols between call participants
IBM Person to Person
Person to Person
Call Manager
\j> }
□
_nrn
fX
—
MIII&
MIMA
p j
/-L\
* Handles all incoming and outgoing call requests
^ Runs continuously to answer and place calls
* ‘aintains status of calls and system o
Chalkboard Utility
8BM Person to Person
Person to Person
Remote DDE
IIIBM Person to Person
Clip Utility
IBM Person to Person
Person to Person
Remote File Transfer Utility
✓ Transfers files in background
✓ Received files held in queue
✓ Transfer multiple files to multiple people
^ Utility can call remote system independently
IBM Person to Person
IBM Conferencing Products
Person to Person
Talk Utility
* Provides real time text communications
^ Can provide a transcript of conference proceedings
>r All entries timestamped and identified by user name
>r Useful for async users when no audio link is available
IBM Person to Person
Person to Person
Stills Capture Utility
Captures video frames from ActionMedia II adapter
✓ Enhanced (High-Resolution) mode, up to 24 bit color depth
✓ Save image as a Bitmap, Paste into Chalkboard or other appl.
IBM Person to Person
Person to Person
Video Sharing Utility
Optional "Video Sharing"
✓ ActionMedia II based video
✓ Bidirectional, 15 FPS
✓ Video only - audio via telephone call
✓ Useful for showing objects in real time
Software decompression option
✓ NO AM II hardware needed at remote end
&' Vide©
can he carried
over any supported
network and protocol
IBM Person to Person
Person to Person/2
Application Integration
Dynamic^
Exct
Programming
interfaces
("Lakes" API)
Shared Ciig
jLaunehablg
- Chalk
-Fits
The Platform for
Workgroup-Enabling
(People AND Applications)
IBM Person to Person
GP01-6
IBM Conferencing Products
Person to Person
It's "Multi-Every thing™
Person to Person
It's "Multi-Everything "
✓ Multi-Platform
/ OS/2, Windows, AIX {planned for future)
✓ Multi-Party
✓ Up to 8 users per conference
✓ Multi-Network
^ NetBIOS, TCP/IP, Novell SPX, SNA APPC/APPN
✓ Token-Ring, Ethernet
✓ Async Modems, ISDN BRi
v' MySIhFooctiori
•/ Chalkboard, Clip (Remote DDE/OLE), File Transfer, Talk
■/ Optional Video Stills Capture and Video Sharing
/ Multi-Industry
v People in any industry can work cooperatively together without
being together
✓ Multi-Application
^ "Cai? the Expert"
v Remote Teams/Meetings
✓ Customer Service
✓ Distance Learning/Sales
v' Telecommuting
BBM Person to Person
IBM Person to Person
Person to Person
3 Good Reasons to Use It
IBM Person to Person
Important Numbers to Remember
\y Connects you with your customers, colleagues,
and friends
v Allows you to share many kinds of information with them
|v Uses the computers and communications you
probably already have in place
✓ Interoperates between Windows and OS/2
platforms today
✓ IBM AIX and Apple Macintosh planned
To Order:
Call 1-800-1BM-C ALL
For More information:
! Call 1-800-IBM-9402
IBM Person to Person
Person to Person
GP01-7
IBM Conferencing Products
GP02
Session Nn
TOPICS
► OVERVIEW of Product & Components
► Additional items from IBM
► System Requirements
► Installation Planning
fc, installation OvsrvlvW
IBM OS/2 Version 2.11
► Award-winning 32-bit PC Operating System
► Runs DOS, OS/2, and Windows 3.1 applications
at-the same time
► Pre-emptive multitasking
► Crash Protection
► Data Integrity and reliability
► Workplace Shell:-Graphical User Interface
► Mainframe Connectivity (e.g., CM/2)
► REXX: Automate procedures
Pane? 1 -4
IBM OS/2 LAN Server Version 3
► File Server
► Print Server
► Requesters included
► Network Operating System: manage resources
► World-class International Language Support
► Multi-client support: Windows & OS/2
► Industry-leading performance
-Number of Users
~ Throughput
► LANQuest Performance Benchmark
Comparison Report:
“October 1993
- Available:
► In U.S.: (800) IBM-4FAX
► Document #2347
Lotus Notes. V3
Cllent/Server Architecture to help manage
information
Store Information of different type s : ,
► Text '
► Spreadsheet Data
► Scanned Images
► Voice
► Video . . ; :/ . Mi U
Lotus Notes V3
► "Knowledge-sharing” applications
► "VIEWS" of documents/forms/applications
: ■ ► Mobile User support
- "Laptop Notes"
► REPLICATION of databases
► "The Groupware Standard"
Session No
San Francisco
Page 5-8
:.V : • ' , ; ■■ ■ " , . , . . . y)V^ ■
s m a® a ■ 11*111
- System PerformanceMonltortfor OS/.
; - •> • My/..
IBM provides
► Graphic display monitoring of: . , 1 |f
-RAM (memory) •
"... a powerful workgroup
fW’llsBl^ v• • r '%'■ ■ '#?'/ ‘Z
- CPU (Processor utilization)
computing solution in a single box
Down to ProeesSiand Thread B-ey|ji|||||g|;/|!|lWi||il|M|j||
§t 3 gOOO pflG©-
*■ Live data captured • 1
► Pre-recorded data with playback capability
-James T. Norman, Contributing Editor,
The Andrew Seybold Outlook
; > Log file capture ,
on Professional Computing
► Detailed reports
v Output to spreadsheets
* ■’ : ■
' ► Alalysls: SYSTEM Balat|§|j| §|§|§
W:: 0 zJ- : C.||S TyTM ■ ■■■■';; ' ■ Vii® /■ .
: : | - Additional Items from IBM include...
: -‘'Getting Started” bookie!
" III ^tOpag^ . j||jj§J :
- Step-by-step instructions ' , -
-Sample configuration included ' -
-CASE STUDY: working model of system If : % ■
-Worksheets: "fill In the blanks"
: *1 .... : • ;
... ,:^*fll088*HV of terms:.
-■ ■■■
’.►Common Installation Guide:
; - VALUE in the packaging of the product
-Testimonial: J. Norman, Contributing Editor,
The Andrew Seybold OUTLOOK on
Professional Computing
- Excellent tool for reseller or VAR
- No other manuals necessary
O /~\ r* r* ! /-> r-i M/~\
Ran Franr.isnn
Page 9-12
► VHS Videotape: "Quick Start”
-Product Overview
-Live Demonstration
“ installation Overview: Graphical Flowchart
- IBS/! Offer: Savings on Consulting Services
■►IBM Customer;Support and Service
-Single Point ©f Contact for components
- 90 days of complementary support in USA
^Q days tor OS/2)
Session No
San Francisco
1
Addtional Items from IBM include ...
► CERTIFICATION from IBM: "Tested and
Approved for LAN Systems"
- Installation Tests
- Compliance Tests
- Compatibility Tests
- Execution Tests
- Objective: Real-world environments
► Also used by Non-IBM Software developers
System Requirements
»=* HARDWARE: THE OS/2 SERVER SYSTEM
- Processor: Intel 486 recommended
- Disk: ’ 300 MB Fixed Disk
- Media: CD-ROM drive
TM
- Network: Token-Ring or Ethernet adapter
► SOFTWARE: THE OS/2 SERVER SYSTEM
- Already Included
Pnrjfi H IS
....
System Requirements
System Requirements
► OS/2 CLIENT SYSTEMS
► DOS/WINDOWS CLIENT SYSTEMS:
- Hardware
- Hardware:
► Processor:
Intel 386 or higher
► Processor: Intel 386
► Memory:
8MB
► Memory: SMB
► Disk:
120MB
► Disk: 120MB
► Network:
Token-Ring or Ethernet ....... .
► Network: Token-Ring or Ethernet
- Software:
- Software
► IBM OS/2 (preferably V2.11 ©r higher)|l'4' /izMMr ■
► DOS (preferably PC-DOS 6.1 or higher)
i
; ; ; .* ill!
► MS Windows (preferably 3.1)
Mill 1 #illl 1
".'j r : .
Installation Planning
► Installation Overview
■" .
► Nanning Conventions: Considerations
Mil,,-,,
. ..
I| s ;
....
'/♦ < V. , / ' ,
i*'
' -S'- 7",
!
Installation Overview
§
► Sample environment
1
-1 Server on OS/2
1
$
- 6 Client Workstations
p
► Any mix of OS/2 or Windows clients
1
► Customer chooses any combination
► Scalability
- "Pilot" LAN: Introduce workgroup computing
- Interconnected LANs
%
- Interconnected Enterprise-Wide Network
Session No.
San Francisco
Page 17-20
Naming Conventions
Naming Conventions
rV, ) ^
► LAN Server:
► LOTUS NOTES:
- Domain Nam®
- Server Name
-Server Name
§|J i ®S¥
- Organization Name
-Administrator's Name and Password
■ -User IDs
- User Names and Passwords
- User Passwords ISfeS’' 1 %
: : ' - : ' ’ ■ ;i’: : ■' ::: ; '
! ' : : : : - m .;®i : :
j . ® x®.: v.®: . xr ' ■ .ix® & MB. x tW^BBBW--
; s » ®l i mmm s;; : ® issiiiliiilisas i
i : s ■ - a
- ®® : - mm p : m . » ■
iBBWPMBBBrB X ; - X X-
Installation Planning: Tools Provided
► Glossary
5 ► Planning Worksheets
- Assist with naming conventions
► Parameter-oriented
S' ►Name-oriented
-"Fill in the blanks"
► Case study: working example configuration
► Quick REFERENCE Tables
- Plan your task
-Jump to right section in Common install Guide
- Consistent reference point during install
Session No
San Francisco
Page 21-24
► Sample Configuration: •
- On® Server ';''
, -Six clients (mixed OS/2,and Windows)
► Server software Installation' f ?
► Client Software installation '
► Other considerations: f \ :
- Dedicated Notes server
- Ethernet environments ' .
- Diskette images provided
-
4 " , 4
Wm4M4
4 '/, '4 ;;
. applications”
► Industrial-strength and scalable :
; 4-.4Va. ANifEl*Ammnl%4 8rii,**laflsljCt#i
;► REXX API: interflow/X from IBM
► Cart provide additional clients later
4^iL : \A#mrlf/rtF<n,Mfn* Amntloatifuie* r3n«iir*l<r HAS
Qoccinn Kin
Qan Pranricrn
Completed Installation
► Which software components reside on which
systems in sample configuration
► Tested for optimized installation
- LAN Administrators
- IS professionals
- DQS/Windows novices
► Completion Objectives:
- Fully operational base system
- No other manuals or service calls required
- A starting point for customization
IBM Server for Workgroups: Directions
► Refresh of Components
-LotusNotes 3.1.5
- LAN Server 4.0
- Other future component releases
► Configurations being considered
- "Version" for,specific market (e.g., mobile)
► Versions
- New product release
- Key requirement: Full Integrated installation
► Possible product promotions
Paae 25-28
Worksheet 1. Installing LAN Server
Required Entry'
Shown in
Procedure As '
Nametdbe.U$ed : :
server ,Name, . . tssejver; ;
Domain Name LSdamain
LAN Requester Name 1 LRmach
LAN Requester Name 2 LRmach
• HALJLc?
~; HALJLSDM
—.— HAL„PC 1
LAN Requester Name 3 LRmach
.. |
nnj^ru* , , , PV-j
HALJgllllli
Worksheet 2. Defining New LAN 'Users '*
Required Entry
Shown in
Procedure As
Name to be Used::
Example , r;^
LAN User 1 ID Name
LAN User 1 Password
LAN User 2 ID Name
LAN User 2 Password
LAN User 3 ID Name
LAN User 3 Password
LSuser
LSuserpw
LSuser
LSuserpw
LSuser
LSuserpw
PETR ILL! -
JACKSON
UAMEBSN
ORLANDO ^
RJAMERSN
AUSTIN
-—-.
M/ \
'M
:
■
111
Table 4. Steps Required to Install the Advanced SetverTor Workgroups Product on your Server
Action
Refer to
1) Plan your network.
Chapter 2, "Planning for installation" on page 7
2) Install OS/2 2,11 on the server machine.
3hapter3, "Installing OS/2 2.11" on page 17
3): Create the necessaiy sets of installation diskettes.
'CreatingInstallation Diskettes" on page 23;
4) Install OS/2 LAN Adaplerand Protocol Support (LAPS) on
thesejvermaachlna.
'Installing OS/2 LAN Adopter and Protocol Support" on page
24
5) Install OS/2 LA N Server -Advanced on the server machine.
'Installing OS/2 LAN Server" on
pane 26
8) Create Installation directories tor Lotus Notes and SPM/2.
'Making Installation Directories for Lotus Notes and SPM/2" on
)age 27
7) Install the Lotus Notes Server on your OS/2, server
machine.
'installing the Lotus Notes Server"
jn page 30
8) install SPM/2 on the server machine. ■
‘Installing SPM/2 (Optional)’’ on
page 36
Interconnected
Enterprise-Wide
. Network
biSULtti,
Session No
San Francisco
Page 29-32
m si m
‘Lotus'Notes SflMWIor OS/2
mm OS/2 IAN 8«mw
\m os/2
Widows
Page 33-36
b©rv&r \m$PW2
■ • Lotus Hotos Server for OS/2
. IBM OS/2 LAM Server '
IBM OS/2
#|^^C^Str MH. 8%q£#tet <
s
;||ppp
i<?fcys JNk>ies Windows Client
IBM COS LAM Requester
Windows
Trademarks and Copyrights
Page 37-40
> IBM, OS/2, SPM/2, System Performance fttonitor/S, and LAN Server are either registered tredenwKe
or trademarks of International Business Machines Corporation / ;
* Lot us Notes Is a registered trademark,of Lotus Corporation
*■ Windows la a trademark of Microsoft Corporation
e Et hornet ie o trademark or reflietarod trademark of the Xerox Corporation ■ ■ •/
San Francisco
Session No.
Windows OS/2
ImagePIus Systems Today
SmagePlus Family
> Largest Image Software and Consulting Company
► Over 1,300 customer installations worldwide
► Broad spectrum of industries
► From small business to large enterprise
► Simple to complex applications requiring high performance
- Integration with existing software applications
> Range of Product Offerings to Meet Customer Requirements
► Host
► Departmental
► LAN
► Client/Server
> Tangible Customer Benefits
► Process & productivity improvements
► Cost reductions
► Competitive advantage
► Reduce paper mess
► Improved customer service
> Technology Differentiators
► Mixed object library management
- Imaging
► Color imaging
- Distributed object management
► Advanced work management
iM^.
► Document Architecture
► System Managed Storage
> Work Process Management
> Image System Management
► ImagePlus/MVS ESA Folder Application Facility
► lmagePlus/400 Workfoider Application Facility
► Visuallnfo lmagePlus/2
► Visuallnfo OS/2 Client
>■ Visuallnfo OS/2 and MVS Servers
IPO1004
IP01005
lmagePlus/2 Workgroup
► immediate Business Value
► Easy to install, Use and Manage
Supports image, Video, Audio, Text, and other
types of information
► Broad Ability to Integrate with Your Existing
Applications
► High Quality and Backed by IBM Support
► Affordable
HM^.
OPERATIONAL IMAGE TO THE DESKTOP!
immediate Business Value
IMPROVES
REDUCES
- Fax
> Copies
I
- Paper Handling m
> Misfiles, Lost documents
- Cycle Time
a
m
Document retrieval time
Customer service
Work-in-process control
Productivity
ipoiooe
IP01007
Easy to Install, Use, Manage
EP'
> End User
- File cabinet concept
► Icon driven
- Automated Installation
► Workplace shell
► System Administrator
► Icon driven
- Automated installation/CD ROM
► Activity Log
r- Online Documentation
► Developer
► Application Program Interfaces
► User Exits
► Sample code library
► Online documentation
POWERFULL Y SIMPLE^SIMPL Y PO WERFUU
Automate Existing Process
Final Review - Committee Loan Admin - Accounting
IP01010
Automate Existing Process...
E^
Over 150 Application Programming Interfaces
User Exits at Key Points
Enhanced Sample Code Library
High Quality-Backed by IBM Support
MM'™* 1 * 0 *
> 800 Number: 1-800-237-5511
e Single point of contact
► Defect, Q&A, and installation support
► Personal response
> CompuServe
► Defect, Q&A, and installation support
► Bulletin board for fixes
► Information bucket for news
► Copy of demo, other tools
> Facsimile
► Defect and installation support
► Convenient submission of problem reports
f Fax or voice response
> Bulletin Board Service
► Fixes, suppot information
Capture
► Convert Paper to Image via Scanner or Fax
► File Import as Image or In Native Format
► Verify the Quality of the Scanned Image
► Indexing
► Manual
Auto (Bar Code, OCR)
IP01015
Library Object Window
> View Window: Document pages or a list of folder Items
> Index Form Window: Index Information associated with the document or folder
> Note Window: Note(s) associated with the document or folder
> Index Class Serves as a Base for:
► Security ~> Access control list
► Auto workflow
► Auto folder
► System managed storage rules
IP01017
Folder Model
► Index Class
► Key Fields
► Description
► Content Class
► Notes
IP01016
► Compression/Decompression
► G3/G4/MMR
Open Design
► API's
► Exits
► OS/2 Presentation Manager
Displays
► Cornerstone Monitors - via
OS/2 Presentation Manager
yC Extensive Document Formats x
► MO:DCA IOCA TIFF BITMAP ASCII \
► Additional formats through Exits / Programr^
Wide Range
of Scanners
All OS/2
Presentation Manager
Printers
IPOIOIf
Retrieval
Document / Folder Processing
i
► Check-in / Check-out
► Update
► Delete from Fileroom
> Basic Search
► All index Classes / Key Fields
► Specify Index Class
> Advanced Search
► Wildcard
► Options for Search
► Document/Folder
► In workflow / Complete / Removed
► Active / Suspended
► Route
► Viapre-defined workflow
► Remove from workflow
► Complete
► Suspend
► Change Priority in Workbasket
► Notes
► Print / Fax / Export
IP01019
IPO1020
Workflow
► User selected
► Shared and Private Workbaskets
t* "FilS-m-the-blanks" Workflow Definitition
«> Serial Workflow
► User Directed / Override
► Conditional Routing via Exits
► Suspend Awaiting Additional Input
Systems Administration - Online
► Users & Privileges : define user, user groups, privileges and access control
► System Managed Storage: define methodology for managing objects in the system
► Fileroom: define key fields and index classes
► Workbaskets: define workbaskets
► Workflow: define workflow
► Index Classes: define document types and index fields stored in the system
► Utilities: workflow history, back-up/restore, reports
IP01021
IP01022
Enhancements to IP/2 for Visual tof®
Install
► Unified install program
► Configuration, installation, distribution-enabled
► Improved EUI
► Pre-defined sample configurations
. System Administration
► Unified systems administration
► Can run concurrently with applications
► Improved usability
- Enhanced Security
► User and user groups
► Access control lists (by index class)
► Views (attributes within index classes)
► Enhanced Systems Managed Storage
► Migrate objects to host
» End User Interface i8M ,naBrf *“.
► CUA '91 menu bars on Index, Note
► Table of Contents
► Enhanced Multi-document View
► Improved icons
► Import Export
► Integrated with product
► Content class handlers
► Enhanced Search Capability
► Wildcards
► Boolean logic
* Ranges
* Integration with SearchManager/2
► Workflow
► Integration with Flowmark
► Enhanced Image Function
► Toolbar
► Magnify
► Advanced scan
Marketplace Reaction
Customer.
"The thing we liked about frie new IBM image product was the V - you can and have
it up >•.»»»:? s: or ithas frie ability to be a; -wx**
"The -r-•‘S'-r'.-r’.-v-is important to us, because we don’t know when we’re going to confront another merger or
another acquisition. It really fits our strategy and will complement us tremendously."
William F. McLimans, Division Manager, Key Services, Subsidiary of Key Corp.
C-oasultoiit
The fact that you put a &■. rd-r:: dwkwp. and you embellish that with more and more
y 0U begin to lay the and then you layer in more
sophisticated types of workflow processes on top of that - r;: • i-: -r::- ¥•* rMfieeyi*!*"
Mike Howard, VP and Service Director of Office Information Systems, Gartner Group
one or two stations,
"IBM now has a new offering that allows you to->.* sxnr
right *:wv>sw: Vr-ai •:>: izv&r;-., and of course,
work with."
Jed Gieim, President, Midcontinent Business Systems
JgM kra{pPtUO c.
Fiowmark for OS/2
► Workflow Management Architecture allows Separation of:
► Application from process logic
► Process modeling from data / function
► Process Animation
► Process Modeling Flexibility
► Object methodology
► Interpretive behavior
► Graphical interface
► Object Technology Employed
» Assign People, Roles & Organizational Responsibilities
s> Import / Export of User Registration
► Work Book Function
► Self documentation of processes
► With cross references
► Rapid Prototyping via REXX Interface
IPO1029
ImagePlus / Fiowmark integration
IP01033
XT02
TO&J? Agenda
mrm&m mummm mmm Eam— ^
SmagePIus/2 Tips, Techniques, Trends & Directions
IP0200I
► Setting Up Your Own Working image System
► Demo of Installation
► System Admin for a Simple System
► Installing Demo Database
> Configuration Examples
> Typical Scenarios
► Sample University Application
► Sample Title Insurance Application
> Planned Additions to the Product
► Available Tools and Help
► ImagePSus Systems Trends and Directions
IP02002
Setting Up Your Owm System
Standalone
Setting Up Your Own System
Local Area Network
► install OS/2
e- Install Data Base 2 for OS/2
► Don’t forget the lastest service - 7015
> Install lmagePlus/2
► Use CD-ROM
► Include latest service from CompuServe
o Work out your system on the Worksheets provided
► Using System Admin, create your system, or
► Install sample data base and experiment
> Install OS/2 on Server, Clients (or use LAD/2)
► Install Data Base 2 for OS/2 on Server, Clients
► Don’t forget the lastest sen/ice - 7015
> Install ImagePSus/2 on Server
► Use CD-ROM
► Include latest service from CompuServe
► Work out your system on the Worksheets provided
► Using System Admin, create your system, or
► Install sample data base and experiment
► For All Clients, several ways to install:
► Build one and duplicate
► Download from Server
► Build each from CD-ROM
► Don’t forget to register your clients
IP02003
System Admin / Examples
► Fileroom
► Users
► Workfoaskets
► Workflow
► Devices
Storage System
Sample Configuration for 5 User Network
► Hardware - Scanning Workstation
► Value Point 433DX/D - $1610
► Additional 12M Memory $800
► XGA Monitor - 15" - $699/Adapter - $325
► Mouse
► Scanner -HP Scan Jet - $799
► Network Card - $285
► Hardware - Other Clients
► Same without scanner - $3700 per client
► Hardware - Server
e ValuePoint Mini Tower - 450DX2/T - $2289
► Monitor - $579
Mouse
► Optical Drive - $2000
► Fax/Modem - $200
► Printer - $499
► Additional Memory - $800
► Network Card - $285
JgJ^lmagattua^
► Software
► OS/2 - $224
► DB 2 for OS/2 - $2495 - server
► DB 2 for OS/2 - $75 per client
► LAN Server/Req - $895
► Fax PM - $99
► lmagePlus/2 - $2495 server
► lmagePius/2 - $395 per client
Image Enable your Office for Under $30,000 !!!
IP02007
Sample Configuration 1 - Standalone
► Hardware
► Value Point 433DX/D - $1610
► Additional 12M Memory - $800
► 340 MB Fixed Disk -$200 extra
► XGA Monitor - 15" - $699
► Mouse
► Scanner - SPJ - $599
► Printer - HP LaserJet - $499
► Fax/Modem (14.4) - $200
► Optional Optical Drive - $2000
Under$7600 I
> Software
O OS/2 - $224
a- DB 2 for OS/2 Standalone - $495
> Fax PM - $99
► lmagePlus/2 - $2495
IP02008
Workflow Scenario #1 - University Applications
Secretary
Scan & Index
Student apps,
scores, letters,
etc.
Clerk creates student folder Each school reviews app, adds
containing app, scores, etc., comments, makes recommend-
sends to proper school ation (adds to folder)
workbasket (suspends)
generates letter to student
with accept or reject; added
to folder
Electronic Fileroom
maintains records for legal,
audit, student inquiries
► Workbasket Filter Support
► Change Password
Case Sensitive Search
*, Performance Enhancements in Search & TOC Display
► Incorporation of Visuallnfo Icons
► National Language & DBCS Support
Planned Additions to BmagePlus/2
> Batch Scan/Multiple Page Scan
> Process Support: Suspend/Activate, Check in/out, Priority, Routing
> Workflow Support: Start, change, remove, complete
u Work-basket full prompt support
> Add Documents/folders to Existing Folders
> Store Fax/Scan Documents in Existing Folders
> Specify Class/Index Fields when adding to new folders
IP02008
Version 2 Additions
► Twain Support ► Page Extraction from Existing Doc
► System Admin Default Options ► Fax PM Support
Native OS/2 Support for HP Scanners *- Installation Enhancements
p- Import Print Driver ► Mail Integration (VIM Support)
► Document View Window Menu Updates
► Store/Retrieve Accelerators
► Smport/Export Integration
IP02010
Available Toots and Sypport
SmagePius Systems Today
► Largest Image Software and Consulting Company
► Over 1,300 customer installations worldwide
► Broad spectrum of industries
► From small business to large enterprise
► Simple to complex applications requiring high performance
► Integration with existing software applications
► Range of Product Offerings to Meet Customer Requirements
- Host
► Departmental
► LAN
► Client/Server
Tangible Customer Benefits
► Process & productivity improvements
► Cost reductions
► Competitive advantage
► Reduce paper mess
► Improved customer service
► Technology Differentiators
► Mixed object library management
► Imaging
► Color imaging
► Distributed object management
► Advanced work management
IP01004
imagePSus Trends and Directions
IP0200020
ImagePlus Family
► Document Architecture
► System Managed Storage
► Work Process Management
► Image System Management
► ImagePius/MVS ESA Folder Application Facility
► imagePius/400 Workfolder Application Facility
► Visuailnfo imagePius/2
► Visuailnfo OS/2 Client
► Visuailnfo OS/2 and MVS Servers
IP01005
Why image Processing
*• Clerical labor * Forma
v Space ► Copies
> Equipment u Couriers
► Productivity v Business Besuits
* Beapor.se Time ► DWemr.tiatior.
► i.oaa Avoiriar.ee
b Organization
^ -7{hVr. Labor
b Fioor Space
t. -39% Storage Space
«■ it riay reriuctior. > Market Snare
> -7f«% Defects ^ *:9% Premium Price
* *39% Verify Speed «, +3% Bepeat Business
„ +20% Biiis/Cierk >. 2-riay Float
> -59% Organization c +».% Customer Bat
ip02015
IPO1003
...Really any object!
► Information Versus Data:
► Any object (image, text, voice, spread sheet, video...)
► Information association (index, folder, context...)
► Value of data is in the context
► Worker Centered:
► Intuitive interfaces
► Personalized applications
► Workstation application control
► Customized / Ad hoc work management
► Mo Paper Within / Between Enterprises:
► Fax
► EMAIL
► Technology Without Limits:
► Client / Server support
► Scalability and performance
► Open systems
IP020010
IP02021
ImagePlus 2000 Strategy Objectives
Address all Customer Wants and Meeds
► Provide Best-o!-breed Functionality
s> Deliver State-of-the-art Technology
► Converge to a Single Product Set
► Supply an ImagePlus Family of Products that
► Sell themselves
- Drop-in install
► Deliver VALUE out of the box
Quality Focus
Delight Our Customers By:
► Building Instinctive-to-use Products
► Providing the Desired Function
► Delivering at the Required Time
► Being Cost Competitive
► Having Zero Defects
► Providing Timely, Error-free Support
High QyaSifiy Deveiopmeot
Support Client / Server Requirements
► Distributed Applications and Services
s> Common System View
► Local and Remote Transparency
Portability
► Configuration Flexibility and Scalability
* System Management
Application Development Support
► Consistent Family CPIs
s- Client / Server Environment
► LOB integration
Software <§* Services Development Kit
► Extended Building Blocks
► Object Oriented
IP02030
ImagePlus 2000 Data Model
IP02031
IP02019
ImagePSus 2000 Strengths
ImagePlus 2000 is an operational multimedia system
driving competitive advantage through the capture,
organization, management and distribution of all types of
information on demand for business units of any size,
► Distributed Multimedia Library
b> Scalable Client Server
► Open Environment
► Robust image Processing
► Application Dev. Environment
s> Easy to Use and Manage
► Functional Breadth:
► Store/Retrieve to work process mgmt
► Off the shelf to custom applications
LAN SERVER OVERVIEW
TOPICS
• PRODUCT EVOLUTION
» LAN SERVER PACKAGING
- A REVIEW OF LAN SERVER 2.0
a LAN SERVER 3.0 FEATURES
= PERFORMANCE COMPARISONS
■ COMPLEMENTARY PRODUCTS
» LAN SERVER DIRECTIONS
» SUMMARY
IBM L
Where is LAN Server?
r er one million LAN Server clier
m
LAN SERVER 2.0 ENHANCEMENTS
- OPERATOR RIGHTS
- GENERIC ALERTER SERVICE
- UN-INTERRUPTIBLE POWER SUPPLY SUPPORT
■ GRAPHICAL ONLINE PUBLICATIONS
■ LAN AWARE WORKPLACE SHELL SUPPORT (OS/2
2.0 CLIENT)
« ENHANCED WINDOWS SUPPORT (DLR CLIENT)
- OEM HARDWARE SUPPORT
IlM LAN Systems
LAN SERVER REVIEW
LAN SERVER 2.0 ENHANCEMENTS
« ADVANCED SERVER
- HIGH PERFORMANCE
- LOCAL SECURITY
-FAULT TOLERANCE
- LAN ADAPTER AND PROTOCOL
SUPPORT
- IMPROVED PERFORMANCE
- MULTIPLE CONCURRENT PROTOCOL STACKS
- OS/2 REMOTE SPL
- GRAPHICAL INSTALL TOOL
IlM LAN Systems
OS/2 LAN SERVER 3.0
"new product Tea tures
• . m &<:i
. : \ .
’ ’ ’ ••- .-SWk •'' ’ ' :
• WTP KW PFP-56WCT :
:.£N*;SiWGt£ '
ACVAhws&'smEawttt'R on ;
* ENTftY SERVER PLUS _
xWxiHIGHPET^GRMANijfeFifilfi^S-YS-Tiiii^
. W •• 'w^KOY^-PAUtT T«L£TtANC£
- : -*f • bQGAb.SECtJRITY ; .
x:|ii:xS£RS^^:ttOLTlPROCE^Off:::-:::-:
: --0&2 OUSNT : fi«HANG6W6N;TS. • : • ;
• .• V-•; •.
• • .-•NT-S ; 2 : :- : :' • • • : \
.. - .••’ftwl <&i&\T “:x x ■'
j: : A
=! ^FOJWANCg ENHANC^e^ x
: : : -CQM^EM£Nn:SRY:PROQUC-TS
: Jltciw^bftbsi^x :Y: : ::
: .V..
xttMUUtfcPRtt^^
p.LWWTPVfliff: •
¥*Lancjistanqs: y
x*<yra£H$v. •
IlM LAN Systems
HPFS386 FILE SYSTEM
« ENHANCEMENTS IN LAN SERVER 3.0
- ENABLED FOR GT 16MB RAM
- SIDEBAND SUB-PROTOCOL
- INCREASED FILE HANDLE LIMIT (8K TO 64K)
- INCREASED SEARCH HANDLE LIMIT (3K 10 8K)
- 32-BIT RLE SYSTEM API SUPPORT
- SMB 2.1 LEVEL DIALECT SUPPORT
- UTILIZE OS/2 DASD MANAGER
- SPM/2 HOOKS
- BETTER ERROR RECOVERY
- HOT FIX ON READ W/FAULT TOLERANCE
IBM LAN Systems
SPM/2 HOOKS
■CACHE
- # OF READS FROM CACHE
- # OF READS FROM DISK
-# OF WRITES TO DISK
- # OF LAZY WRITES
- # OF FORCED IMMEDIATE
WRITES (NO FREE BUFFERS)
- # OF CACHE BLOCKS
- HEAP
- TOTAL HEAP SPACE
- MAX POSSIBLE HEAP
ALLOCATION
« RING-0 SERVER
- 29 HOOKS
. FILE MANAGEMENT
-OPEN FILE COUNT
- CLOSE COUNT
- # OF FILES BEING WRITTEN
- # CLOSED READ ONLY FILES
- # CLOSED READ STRICTLY
SEQUENTIALLY FILES
. READ AHEAD
-# CACHE BLOCKS READ BY
READ AHEAD
- # CACHE HITS ON BLOCKS
READ IN BY READ AHEAD
- # OF BLOCKS OVERWRITTEN
BEFORE BEING USED
- # OF WHOLE FILES READ IN
IBM LAN Systems
LAN SERVER ADVANCED
DISK FAUL T TOLERANCE
PROTECTION FROM DISK FAILURE
° Fault Monitoring
" Error Correction
D Disk Mirroring - concurrent online backup
■ Disk Dunlexinn - extends fault tolerance to drive controller
NEW WITH LS 3.0
Q Boot partition mirroring
" "Mirroring on the fly" -- remirroring of repaired disk
with only one step by the administrator
IBM LAN Systems
NTS/2 CONTENT
- PROTOCOLS/DEVSCE DRIVERS/API's
- 802.2 VDD/PDD SUPPORT
- NETWARE CLIENT CO - EXISTENCE (ODI2NDI)
- SIDEBAND NETBIOS SUB-PROTOCOL
- OEM ADDITIONAL DRIVERS DISKETTE
- ENHANCED MULTIPLE ADAPTER SUPPORT
- CONFIGURATION/INSTALLATION
- STANDALONE 1NSTALLNCONFIGURATION
- CID ENABLEMENT
- LAN CID UTILITIES
- SUITE OF APPLETS
IBM LAN Systems
LAN SERVER 3.0 TRANSPORT
NTS/2 ARGHTTECtUrE
LAN SERVER 3.0 TRANSPORTS
TCP/IP SUPPORT — —
• REQUIRES TCP/IP FOR OS/2 AND NETBIOS FOR TCP/IP
« BOTH PROTOCOLS CAN FLOW ON THE SAME LAN
« NO RSPL SUPPORT
IBM LAN Systems
LAN SERVER 3.0 TRANSPORT
ENHANCED MULTI-ADAPTER SUPPORT
ALLOWS UP TO 1000 REQUESTERS PER SERVER ON A SINGLE NETWORK
• ABILITY TO INSTALL ANY COR0B8NAHON - FOUR BUSISASTER CARDS,
TWO TOKEN-RING, ETHERNET, PC LAN CARDS
IBM LAN Systems
LAN SERVER CLIENTS
LAN SERVER REMOTE INSTALL
IBM LAN Systems
LAN SERVER CLIENTS
OS/2 LAN SERVER 3.0 PEER SERVICES
FUNCTION
o SINGLE SESSION RESOURCE SHARING BETWEEN PEER WORKSTATIONS
PACKAGING
o INCLUDED WITH OS/2 CLIENT IN LAN SERVER 3.0
CHARACTERISTICS
• ONE RESOURCE ACCESS SESSION AT A TIME
o NO LIMITS ON INTERPROCESS COMMUNICATIONS FACILITIES (NAMED PIPES)
. USER OR SHARE LEVEL SECURITY
. LOCAL OR REMOTE ADMINISTRATION
ISM LAN Systems
LAN SERVER CLIENTS
LAN SERVER VIRTUAL DEVICE DRIVERS
ISM LAN Systems
LAN SERVER CLIENTS
DOS LAN REQUESTER ENHANCEMENTS
OS/2 [| 5
S OS/2 LAN
CLIENT
JGL server
< --
dos n
fl II WINDOWS
CLIENT ilia
CLIENT
« DOS CLIENT PERFORMANCE ENHANCEMENTS
. INT21 FAST PATHS
• DOS TRANSPORT ENHANCEMENTS
. SIDEBAND
. DOSBEUI
• DECS SUPPORT FOR DLR WINDOWS CLIENT
e DLR VIRTUAL DEVICE DRIVER (VDD) FOR OS/2 2.x
IBM LAN Systems
LAN SERVER CLIENTS
DOMAIN MANAGEMENT API'S
- ABILITY TO WRITE APPLICATIONS TO MANAGE
THE DOMAIN CONTROL DATABASE
- APPLICATIONS
• PUBLIC
. PRIVATE
- ALIASES
e FILE
. PRINT
• SERIAL
oEXTERNAL
- LOGON ASSIGNMENTS
. FILE
. PRINT
• SERIAL
. EXTERNAL
. APPLICATION SELECTORS
IBM LAN Systems
PERFORMANCE COMPARISONS
LANQUEST LABS
"IBM has improved the performance of LAM Server 3.0 so
dramatically that, under 16 megabit-per-seeond Token Ring,
LAM Server now edges out LAM Manager as the fastest of
the three leading LAM operating systems - NetWare, LAM
Manager, and LAN Server."
- PERFORMANCE BENCHMARK COMPARISON
- NOVEMBER 1992
■ COPIES OF THE REPORT CAN BE OBTAINED
THROUGH 1-800-IBM-4FAX. DOCUMENT 2347
and 2349,
IlM LAN Systems
PERFORMANCE COMPARISONS
LANQUEST LABS
lUM LAN Systems
irmance Benchmark Comparison
ling Nine Business Application Performance Tests
Note: Too many
tests fa8«d to aflow
reporting or remits
PERFORMANCE COMPARISONS
National Software Testing Laboratories
"LAN Server had the highest Overall Performance Score on
MSTL’s test configuration across all five (WordPerfect 5.1,
Lotus 1-2=3, dBase IV, XCOPY, cc:Mail 3.2) application -
based tests. (Comparing LAN Server 3.0 Advanced, LAN
Manger 2.1a, and Netware 3.11)"
■ Network Operating System Performance
Comparison
- November 1992
IBM LAN Systems
PERFORMANCE COMPARISONS
National Software Testing Laboratories
i
!
! .i
i iNO^en i leiwdtri j 1
!
Overall Performance Score
1
J J
Microsoft LAN Manager 2
IBM LAM Server 3 0 Advancer-
J
. 8 j
C
) 2 4 6 0 10
IBM LAN Systems
LAN SERVER CLIENTS
IBM LAN SERVER SOFTCOPY LIBRARY
m FOR USE WITH BQOKMANAGER READ (NOT
INCLUDED)
- SEPARATELY SOLD SOFTCOPY LIBRARY (96F8486)
- INCLUDES THE SHIP-GROUP PUBLICATIONS IN BOOKMANAGER
FORMAT
. SEPARATELY SOLD HYPERTEXT APPLICATION
PROGRAMMING REFERENCE
... THIS ON-LINE PUBLICATION IS INCLUDED WITH THE HARDCOPY
APPLICATION PROGRAMMER'S REFERENCE ALONG WITH
SAMPLE PROGRAMS
IBM LAN Systems
a ADMINISTRATOR
- NETWORK ADMINISTRATOR REFERENCES (VOLUMES 1,2, AND 3)
- PROBLEM DETERMINATION REFERENCES (VOLUMES 1, 2, AND 3)
- MASTER INDEX
- PC LAN MIGRATION GUIDE
i a a s cm innnnT nnnADflS! ! iocd’c !ir»c
“ LHiY ourrun i rnuvan«ivi woun <j «wiul
- PRODUCTIVITY AIDS
- END-USER INFORMATION
- OS/2 LAN REQUESTER USERS QUICK REFERENCE
- DOS LAN REQUESTER AND DLR WINDOWS USER'S QUICK
REFERENCE
- ADDITIONAL ONLINE REFERENCES
IBM LAN Systems
COMPLEMENTARY PRODUCTS
IBM OS/2 LAN SERVER FOR MACINTOSH
IBM LAN Systems
COMPLEMENTARY PRODUCTS
MULTIPROCESSOR SUPPORT
IBM PS/2 SERVER 295
« ASYMMETRICAL MULTI-PROCESSOR ENVIRONMENT
• PROVIDES GUARANTEED PROCESSOR CAPACITY TO
APPLICATIONS RUNNING IN CONJUNCTION WITH THE ADVANCED
SERVER
* OFF-LOADS ADVANCED SERVER TO THE SECOND PROCESSOR
IBM LAN Systems
COMPLEMENTARY PRODUCTS
LAN NETVlEW
■ NETWORK MANAGEMENT
>PERFORMANCE
IBM LAN Systems
COMPLEMENTARY PRODUCTS
LAN FILE SERV1CES/ESA
- EXTENDS WLFS/VM FUNCTIONS TO MVS
■ REPLACES WLFS/VM FOR VM
- LAN SERVER CLIENTS ACCESS HOST DATA DIRECTLY
- MULTIPLE GATEWAY TO HOST CONNECTIVITY
OPTIONS
- CHANNEL ATTACH
- TCP/IP
- ACF/VTAM (3172-3 CONTROLLER)
- COMMUNICATIONS MANAGER/2 (SNA)
- ENABLES HOST BACKUP SCENARIOS
IBM LAN Systems
COMPLEMENTARY PRODUCTS
wan comEcrmmr
• LAN DISTANCE
- Remote LAN Access
■ NETBIOS FOR TCP/IP
- TCP/IP Encapsulated NetBios
- LAN-TO-LAN WAN
- SNA Encapsulated NetBios
IBM LAN Systems
LAN SERVER DIRECTIONS
LAN SERVER DIRECTIONS
® FOCUS ON HW/SW
INTEGRATION AND
SINGLE SYSTEM
IMAGE
« ENHANCED PEER
NETWORKING
FUNCTIONS
$ CONTINUED INVESTMENT IN
LAN SERVER
ENHANCEMENTS
«, EXPLOITATION OF NEW
TECHNOLOGIES
IlM LAN Systems
IBM LAN Systems
OS/2 LAN SERVER 3.0
PRODUCT SUMMARY
. TWO PACKAGES
- ENTRY AND ADVANCED
- CLIENTS AND TRANSPORTS INCLUDED
. LAN SERVER 2.0 FUNCTION PLUS...
- ADVANCED SERVER ON OS/2 2.0
- IMPROVED PERFORMANCE
- IMPROVED TRANSPORT - NTS/2
- TCP/IP SUPPORT
- REMOTE INSTALL
- OS/2 CLIENT PEER SERVICES
- DLR VDD
. COMPLEMENTARY PRODUCTS
- MULTIPROCESSOR EXTENSION FOR THE MODEL 295
- MACINTOSH CLIENT SUPPORT
IBM LAN Systems
LS02
IBM LAN SERVER
DIRECTIONS
Presentation Outline
- LAN Server Evolution
» Design Focus
- Enhancements and New Technology
- Summary
ISM LAN Systems
LAN SERVER DIRECTIONS
For our legal department...
Tfa© Mowing is a snapshot of IBM LAM Server’s current technological
direction. This presentation is not a product announcement, nor does it
imply a specific schedule or product commitment. IBM may change the
Information contained In this presentation at any time.
IBM LAN Systems
LAN SERVER
DESIGN FOCUS
^PRESERVE CUSTOMER INVESTMENT
■ ENHANCE EXISTING PRODUCTS
■ PROVIDE A SINGLE SYSTEM IMAGE 3
■ INTEGRATE HARDWARE/SOFTWARE PLATFORMS
- LEVERAGE NEW TECHNOLOGIES
mU LAN Systems
LAN SERVER
TECH NO L OG Y INTEGRA TiON
TWO STEP PROCESS:
1) ENABLE TECHNOLOGY PARTICIPATION
(VIA AGENT OR TRANSLATION)
2) MOVE BASE TO NEXT GENERATION OF
TECHNOLOGY
Allows customers to benefit from technological
advances with minimum Investment while providing
easy migration between old and new technologies.
IBM LAN Systems
LAN SERVER
Preserving Customer investment thru:
■ INTEGRATION AND COEXISTENCE
- LAN SERVER "LEGACY” PRODUCTS
- OTHER NOSs
■ MULTI-PROTOCOL SUPPORT
* OPEN SYSTEMS DIRECTION
■ TWO STEP APPROACH FOR INTEGRATING TECHNOLOGY
IBM LAN Systems
LAN SERVER
DESIGN FOCUS
i'PRESERVE CUSTOMER INVESTMENT
g ENHANCE EXISTING PRODUCTS
■ PROVIDE A SINGLE SYSTEM IMAGE
- INTEGRATE HARDWARE/SOFTWARE PLATFORMS
■ LEVERAGE NEW TECHNOLOGIES
SUM LAN Systems
LAN SERVER ENHANCEMENT
tglNi
MM.Wm
%,maF 3
syfrx*g§filiil
IBM LAN Systems
Peering into the future
* ONE SESSION AT A TIME
* ONE PRINTER
* ONE SERIAL DEVICE QUEUE
, COMMAND LINE INTERFACE
* MULTIPLE SHARED SESSIONS ^
* MULTIPLE SHARED DEVICES
«■ DDE CLIPBOARD
* COMMAND LINE INTERFACE
» WORKPLACE SHELL MESSAGING
o FILE AND PRINT SHARING
« ODE CLIPBOARD (WINDOWS)
« COMMAND LINE INTERFACE
o GUI (WINDOWS)
Why Peer Services?
SHARING RESOURCES
o PRINTER, SERIAL DEVICE AND FILES
COMMUNICATING
« MESSAGING
• NETWORK DYNAMIC DATA EXCHANGE (DDE) AND CLIPBOARD
LIGHTWEIGHT
. LOW MEMORY AND DASD REQUIREMENT
• EASY TO INSTALL AND USE
• FLEXIBLE COMPLEMENT TO CLIENT/SERVER NETWORK
IBM LAN Syste,
LAN SERVER
Design focus" q
^PRESERVE EXISTING CUSTOMER INVESTMENT
if ENHANCE EXISTING PRODUCTS
^PROVIDE A SINGLE SYSTEM IMAGE S
^INTEGRATE HARDWARE/SOFTWARE PLATFORMS
■ LEVERAGE NEW TECHNOLOGIES
IM LAN Systems
IBM LAN Systems
Multiprotocol Transport Services
homogeneous ->heterogeneous networking protocols
IBM LAN Systems
Common Transport Semantics
transport user transport user |transpprt u$e
CTS includes:
• Native flows for matched user and provider protocols
• MPTN function compensation and address mappings
for unmatched user and provider protocols
® Function delivered by industry standards such as
RFC 1001/1002 for NetBIOS over TCP
IBM LAN Systems
MPTS Networking Blueprint
IBM LAN Systems
LAN SERVER
tSM LAN Systems
LAN SERVER AND DCE
ARCHITECTURAL COMPARISON
mmmt &&
ISM LAN Systems
What is DCE?
DCE Features - End User
■ integrated Name Space
- ALL DCE resources in same name space
■ Integrated Security
- in Remote Procedure Calls (RPC)
- with users/groups/etc...
LAN Systems
DCE Features - Administrator
0 Distributed File SystemManagement
- Users/groups/accounts
- Access Control Lists (ACL's)
- Name Space
- Distributed Time
IlM LAN Systems
DCE Functions
■ Threads
■ Remote Procedure Calls (RPC)
b Global and Cell Directory Services
■ Security
■ Time Service
■ Distributed File Service (DFS)
IBM LAN Systems
DCE Features ■ Developer
a Network-Independent communication
API's
■ Built-in security
■ Integrated namespace
■ Easy to use client/server paradigm
a Single source code for heterogenous
machines
■ Parallel processing control
- Server threads
- Client threads
IBM LAN Systems
Threads
■ Uses OS/2 kernel level threads
* Multiple execution flow in the same
process
- Easy communications between threads
- Cheaper than processes
IBM LAN Systems
Remote Procedure Calls - RPC
■ Proven means of distributing application
execution
■ Masks network complexity
q Uses familiar programming paradigm
a integrated with other DCE components
Client Server
IBM LAN Systems
DCE Directory Services
■ Comprehensive Directory Service
a integrated with RPC's and with Security
■ Replicated Databases
- One Master, many Read Only copies
- Updates by skulking
- Can make a Read Only copy into the Master
■ Backup/Restore methods
IBM LAN Systems
Two Tiers
- Cell Directory Services (CDS)
- Global Directory Services (GDS)
cuuns» iui uyo
Semen's’ DIR-X tor GDS
■ Standards
- CCITT X.500/ISO 9594 Directory Service
- Internet DNS
- X/Open Directory Service API
IBM LAN Systems
DCE Naming Conventions
■ Global Names
7.../<ce!l_name>/<dir_name>/<ob|_name>"
"/.../ciaysceil/hosts/ciayb"
"/.../Mandtebrot/fs/u/ctay"
■ Local Names
7.:/hosts/clayb"
7.:/fs/u/clay"
■ Local File System
"/:/u/clay"
IBM LAN Systems
IBM LAN Systems
DCE Time Service
Precise, fault tolerant clock
synchronization
Origin: DEC'S Distributed Time
Synchronization Service (DECdts)
Standards: Interoperable with Internet
NTP
IBM LAN Systems
DCE Security
* Authentication of identities (private keys)
» Authorization checking (ACLs)
® Data integrity Verification (checksum)
» Data Privacy (encryption)
IBM LAN Systems
Distributed File Services
Distributed File System
■ Transparent access to remote files
■ Two types of file systems
- Local File System (LFS) (Episode)
- other fife systems, NFS, Unix, etc.
« LFS is an advanced file system
- high performance
- log-based
- fast restarting
- High Availability
- Strong Security
- Backup and Restore
IBM LAN Systems
Workplace OS
Modular & Flexible
a Based on Common System Elements
► Specific Offerings for Different Markets
a Taking Advantage of Commonality
Modern OS Base, While Taking Existing Investment Forward
► Open to industry
« Other H/W Platforms. Other Personalities
Multi-Application, Multi-Platform, Multi-Vendor
IBM LAN Systems
Distributed Print Management
Framework (DPMF)
OS/2 LAN SERVER
SERVER
IBM LAN Systems
Workplace OS, OS/2 & AIX/6000
Positioning
- PC Heritage
IBM LAN Systems
LAN SERVER DIRECTIONS
* FOCUS ON HW/SW
INTEGRATION AND
SINGLE SYSTEM
IMAGE
• ENHANCED PEER
NETWORKING
FUNCTIONS
j EttTRYyftJ
um* r *
j.\. Lan
i
® CONTINUED INVESTMENT IN
LANSERVER
ENHANCEMENTS
® EXPLOITATION OF NEW
TECHNOLOGIES
ROfl 809
LS03/4
0$/' IN SERVER
; |jP5.ANP TECHNIQUES
iOtN- SYSTEMS D EVE LQPM ENT
Hit: i ;*2
OS/2 LAN SERVER LOGON
LAN SERVER LOGON: TOPICS
TOPICS
WHAT IS LAN SERVER LOGON?
« VALIDATE USER ID AND PASSWORD
- REGISTER USER ID AND PASSWORD WITH LOCAL CLIENT
* ENFORCE SINGLE LOGON
- ADD A SPECIAL NETBIOS NAME: <domainname><userld>
- ADD ADDITIONAL NETBIOS NAMES
_ CLIENT NAME, DOMAIN NAME, MESSAGING NAMES
- ESTABLISH USER LOGON ATTRIBUTES
- LOGON RESOURCE ASSIGNMENTS
- LAN SERVER APPLICATIONS
. REGISTER USER ID AND PASSWORD WITH UPM
OS/2 LAN SERVER LOGON
LEVELS OF LAN SERVER LOGON
OS/2 LAN SERVER LOGON
TIPS FOR SPEEDING UP LOGON
REDUCE NETBIOSRETRIES FROM 8 TO 1
SAVES 3.5 SECONDS PER NETBIOS NAME ADDED
OTHER TECHNIQUES FOR SPEEDING UP LOGON
ll
DON'T RUN THE MESSENGER SERVICE
SET MULTILOGON TO YES
CHANGE ADDITIONAL SERVERS TO BACKUP ("NET ACCOUNTS
USE LOCAL LOGON (AS OF LS 3.0)
NOTE: LOGON PERFORMANCE IN LS 3.0 IS IMPROVED
OS/2 LAM SERVER LOGON
LOGON AND ACCESS CONTROL
OS/2 LAN SERVER LOGON
WHAT IS USER PROFILE MANAGEMENT?
« IF I AM LOGGED ON ; I GET NO REMOTE PRIVILEGE
TH& LOGON IS A PROCESS FOR REGISTERING A USER ID AND PW IN
LOCAL CUENT TO BE USED IN SUBSEQUENT RESOURCE
REQUESTS
- IF I AM CONNECTED TO A RESOURCE, I GET NO
PRIVILEGE
- HAVING A CONNECTION TO A SERVER SIMPLY SAYS I AM A VALID
USER ON THAT SERVER NETWORK PROTOCOL FLOWS ARE EXACTLY
THE SAME FOR CONNECTING TO A SERVER WITHIN OR OUTSIDE
YOUR DOMAIN
■ ACCESS CONTROL IS ENFORCED WHEN A RESOURCE
!S OPENED
OS/2 LAN SERVER LOGON
CLIENT EMULATED SINGLE LOGON
- AT LOGON, YOUR USER ID AND PASSWORD ARE REGISTERED
WITH BOTH THE LS REDIRECTOR AND USER PROFILE
MANAGEMENT {UPM)
. AT DOMAIN LOGON, THE LS CLIENT WILL ATTEMPT TO VALIDATE
WITH A PREVIOUSLY REGISTERED USER ID AND PASSWORD
FKOSr yirisw
. COMMUNICATIONS MANAGER AND DATABASE MANAGER FROM
EXTENDED SERVICES WILL ALSO ATTEMPT TO VALIDATE WITH A
PREVIOUSLY REGISTERED USER ID AND PASSWORD
ISSUE A LOCAL LOGON JUST AFTER BOOT. IF
YOUR USER ID AND PASSWORD IS VALID ON ALL
SUBSYSTEMS, YOU WILL NOT BE PROMPTED FOR
YOUR PASSWORD AGAIN
CONNECTING TO RESOURCES
Issues
NET
SHARE
OS/2 LAN SERVER LOGON
NET SESSION VS NET WHO
A USER WHO IS LOGGED ON MAY NOT HAVE A SESSION
A USER WHO HAS A SESSION MAY NOT HAVE BEEN
VALIDATED BY THIS DOMAIN
if IF YOU ARE GOING TO BRING DOWN A SERVER
pf SEND A MESSAGE TO THE "Nfc i SESSION" US i
LS 3.0 CREATES THE "NET WHO" LIST BY POLLING
THE SERVERS IN THE DOMAIN FOR THEIR ACTIVE
SESSIONS.
CONNECTING TO RESOURCES
SINGLE SYSTEM IMAGE
* USERS
* RESOURCES/DIRECTORY
» APPLICATIONS
* LOGON ASSIGNMENTS
CONNECTING TO RESOURCES
LAN SERVER DIRECTORY SERVICE
* ALIASES ARE THE LAN SERVER
DIRECTORY TECHNOLOGY
- SINGLE SYSTEM VIEW TO RESOURCES ON MULTIPLE
SERVERS IN A DOMAIN
- LOCATION INDEPENDANCE
- RESOLVES TO \\SERVERNAME\NETNAME
- DEFINE SHARE CONFIGURATION FOR ALL SERVERS
IN A DOMAIN
- DEFINE USER LOGON CONNECTIONS
- SIMPLIFY BROWSE AND CONNECT
CONNECTING TO RESOURCES
BROWSE TECHNIQUES ~ ~~~
a BY ALIAS
- FSI OR COMMAND LINE
- VIEW A SINGLE LIST FOR ALL RESOURCES IN A
DOMAIN (SINGLE SYSTEM IMAGE)
- CROSS DOMAIN SUPPORT
■ BY SERVER
- FSI OR COMMAND LINE
- VIEW A LIST OF SERVERS THEN VIEW A LIST OF
RESOURCES ON THE SPECIFIC SERVER
- CROSS DOMAIN SUPPORT
CONNECTING TO RESOURCES
VIEWS OF RESOURCES
CONNECTING TO RESOURCES
CONNECTION TECHNIQUES
; ALIASED RESOURCES
i ;
: SHARED,
not :
ALIASED j
AT
SERVER
! STARTUP
ASREQ. AT ADMIN.i_ v __ DK1 . j
BY USER i ACTION ETERNAL
! LISTS OF ALIASES
(BY DOMAIN) i
. FULL SCREEN INTERFACE !
• NET ALIAS
V"
|
i : i
| ■
j (
j LIST OF SHARED RESOURCES!
(BY SERVER)
s FULL SCREEN INTERFACE
| • NET VIEW Wservername
!
: v \
: i i
IN USE ; SHARED; SHARED!
ONLY ONLY ONLY ;
V
j
1 j
. DEVICED CONNECTION
- ASSIGN A LOCAL VIRTUAL IDENTIFIER TO THE REMOTE RESOURCE
- APPLICATIONS ARE UN-AWARE OF RESOURCE LOCATION; THE
REMOTE RESOURCE APPEARS TO BE LOCAL TO THE CLIENT
- CONNECTION BY AUAS OR BY SERVER
- IMPLICIT CONNECTION
- NO EXPLICIT CONNECTION TO VIRTUAL ID
- CONNECTION IS ESTABLISHED AUTOMATICALLY
- CONNECTION BY SERVER ONLY, ANY SERVER IN ANY DOMAIN
- LOCATION OF RESOURCE IS FIXED; APPLICATION MUST BE UNC
ENABLED AND AWARE OF THE RESOURCE LOCATION
* ONLY IF CURRENTLY SHARED
CONNECTION STEPS
CONNECTING TO RESOURCES
HOW ~MANY WA YS CAN YOU CONNECT TOA
RESOURCE?
1. NET COMMAND - NET USE
a BY ALIAS OR BY SERVER, ANY DOMAIN
2. FULL SCREEN INTERFACE - RESOURCE ASSIGNMENTS
. BY ALIAS OR BY SERVER, ANY DOMAIN
3. LOGON - LOGON RESOURCE ASSIGNMENTS
- BY ALIAS ONLY, ANY DOMAIN
4. LAN SERVER APPLICATION LAUNCH TIME
□ BY ALIAS ONLY, ANY DOMAIN
5. OS/2 NETWORK OBJECT
* BY ALIAS AND BY SERVER, ANY DOMAIN
6. DIRECT ACCESS VIA UNC
=> EXAMPLE: COPY \\SERVER\NETNAME\FILE.EXT
7. APPLICATION RUN TIME USING APIs
a NetUseAdd (BY SERVER ONLY)
o DosOpen UNCName ......
□ OS/2 GENERIC LAN APIs (BY ALIAS OR BY SERVER, ANY DOMAIN)
CONNECTING TO RESOURCES
HOW MANY WA YS CAN A RESOURCE BE
SHARED?
1. NET COMMAND - NET SHARE
. AT THE SERVER OR REMOTE USING NET ADMIN
„ by ALIAS IN CURRENT DOMAIN OR BY SERVER IN ANY
DOMAIN
2. FULL SCREEN INTERFACE - START SHARING SECTION
h FROM ANY OS/2 CLIENT LOGGED ON TO THE DOMAIN
. BY ALIAS OR BY SERVER IN THE CURRENT DOMAIN
3. LOGICAL SERVER - AT SERVER STARTUP
. ALIAS TYPE "AT SERVER STARTUP"
4. LOGICAL SERVER - AT NET USE TIME
° ALIAS TYPE "AS REQUIRED BY USER
5. APPLICATION - NetShareAdd
CONNECTING TO RESOURCES
CONNECTING TO RESOURCES WITHIN THE
CURRENT DOMAIN
m
WITH THE FULL SCREEN
WITH THE COMMAND LINE
mm
NET ALIAS
pi
- OR -
NET USE device aliasname
SELECT FROM A LIST OF SERVERS
-OR-
mm
NET VIEW
mm
SELECT FROM A LIST OF NETNAMES*
NET VIEW Wservername **
mm
NET USE device \\servername\netnam<
> ALIASED EXTERNAL RESOURCES ARE AVAILABLE IN THIS LIST
** "AS REQUIRED BY USER" ALIASES WILL APPEAR ONLY IF
CURRENTLY SHARED {IN USE)
CONNECTING TO RESOURCES
OUTSIDE YOUR DOMAIN
m
WITH THE FULL SCREEN
WITH THE COMMAND LINE
ill
KEY IN SERVER NAME*
NET VIEW Wservername *
ip
SELECT FROM A LIST OF
NET USE device \\servername\netname [pw]
:;*:P
NETNAMES
-OR -
la
NET USE device \\servemame\netname [pw]**
" PRIOR KNOWLEDGE OF SERVER NAME REQUIRED
** PRIOR KNOWLEDGE OF SERVER NAME AND NETNAME REQUIRED
III CONNECTING TO "AS REQUIRED BY USER” ALIASES
111 OUTSIDE YOUR DOMAIN IS ONLY POSSIBLE IF THE
p RESOURCE IS CURRENTLY SHARED
CONNECTING TO RESOURCES
RESOURCE NA VIGATION AND CONNECTION
WITH OS/2 2.0
LS SERVER CONTAINER
CONNECTING TO RESOURCES
OTHER CONSIDERATIONS
BY SERVER CONNECTION TECHNIQUES CAN BE
USED TO CONNECT TO ALIASED RESOURCES BY
USING THE ALIAS AS THE NETNAME
- NET USE Q: \\SERVERNAME\AL1AS
- COPY \\SERVERNAME\ALIAS\DIR\FILE.EXE
USE ’’SHARE AT SERVER STARTUP" TYPE ALIASES
FOR RESOURCES THAT WILL BE ACCESSED USING
"BY SERVER" TECHNIQUES
CONNECTING TO RESOURCES
TECHNIQUES USING OS/2 2.0 WORKPLACE
SHELL
NAVIGATE:
NAVIGATE USING THE NETWORK
OBJECT TO A RESOURCE
CONTINUE NAVIGATION
TO THE OBJECT VIA
THE NETWORK OBJECT
ASSIGN A LOCAL LOGICAL
ID TO THE REMOTE
RESOURCE
CONTINUE NAVIGATION TO
THE OBJECT VIA THE
FILES FOLDER
-—— THEN ---
CONFIGURE:
SHADOW THE REMOTE OBJECT INTO
A FOLDER ON YOUR DESKTOP
OBJECTS SHADOWED FROM SERVERS ARE CLIENT SPECIFIC
SHADOWED OBJECTS REMAIN WITH A MACHINE AND DO NOT MOVE WITH
A USER'S LOGON
OBJECTS DEFINED WITH UNCs ARE DETERMINISTIC
OBJECT WILL POINT TO SAME SERVER REGARDLESS OF LOGON DOMAIN
OBJECTS DEFINED WITH REDIRECTED LOCAL IDs ARE FLEXIBLE
^'‘T" CONFIGURE ALL DOMAINS TO HAVE A COMMON SEnVICES SERVER ’
W& WITH ALL USERS HAVING THIS RESOURCE AS A LOGON ASSIGNMENT
TO THE SAME DRIVE
——■■ - -
REMOTE DOS APPLICATIONS MUST BE DEFINED USING REDIRECTED LOCAL IDs
OS/2 2.0 WILL ATTEMPT TO RESOLVE A UNCTO A DEVSCED CONNECTION
ALL OS/2 OBJECTS WORK TO ANY NETWORK PROVIDER
CONNECTING TO RESOURCES
TIPS REGARDING CONNECTIONS
CONNECTING TO RESOURCES
RESOURCE NA VIGA TION AND CONNECTION
WITH WINDOWS
WINDOWS FILE MANAGER
MORE TIPS REGARDING CONNECTIONS
gg§
USE THE HIDDEN DRIVE LEVEL SHARES
ill
(\\SERVERNAME\C$)
mm
DON’T WORRY ABOUT LOSING YOUR
ill
CONNECTION TO A SERVER. IF THE
CONNECTION BECOMES AVAILABLE AGAIN, LAW
SERVER WILL AUTOMATICALLY RECONNECT
m
IF YOUR DEFAULT PASSWORD IS NOT VALID TO A
SERVER OUTSIDE YOUR LOGON DOMAIN, PUT
111
THE VALID PASSWORD ON THE END OF THE NE T
USE COMMAND
CONNECTING TO RESOURCES
DIFFERENT PASSWORDS ON NET USE
ARRANGING SERVERS
TOPICS AND ISSUES
DASD
REQUIRE¬
MENTS
DOMAIN 8
STRUCTURB
ARRANGING SERVERS
SERVER ROLES
ARRANGING SERVERS
ENTRY VS ADVANCED
. DOMAIN CONTROLLER (REQUIRED)
- USER DATABASE ROLE: PRIMARY
- SOURCE OF NET.ACC REPLICATION AND DOMAIN LOGON ACCOUNT
VALIDATION
- HANDLES ALL DOMAIN CONTROLLER DATABASE (DCDB) REQUESTS
* ADDITIONAL SERVERS (OPTIONAL)
- USER DATABASE ROLE: MEMBER OR BACKUP
- TARGET OF NET.ACC REPLICATION
- ADDITIONAL SERVER IN BACKUP ROLE WILL ASSIST DOMAIN
CONTROLLER WITH DOMAIN LOGON ACCOUNT VALIDATION
- OPTIONAL TARGET OF DCDB REPLICATION
■ ENTRY - ADVANCED
- RUNS AT THE SAME PRIVILEGE - RUNS AT THE SAME PRIVILEGE
LEVEL AS APPLICATIONS LEVEL AS THE OS/2 KERNEL
- BEST SUITED FOR CO-EXISTING - BEST SUITED FOR DEDICATING
WITH OTHER SUBSYSTEMS ALL THE POWER OF A MACHINE
- AN ENTRY SERVER CAN BE A TO LAN SERVER
USER'S DESKTOP MACHINE - AN ADVANCED SERVER
MACHINE SHOULD BE
DEDICATED TO REMOTE DEVICE
SHARING
ARRANGING SERVERS
OTHER SERVER ROLES
ARRANGING SERVERS
ARRANGING DOMAINS
■ RJPL SERVERS
■ APPLICATIONS SERVERS
■ DEDICATED VS MULTI-PURPOSE
(MUL fl-sUBSYsTbM)
DOMAINS ARE GROUPS OF SERVERS WITH COMMON USER DEFINITIONS
DOMAINS PROVIDE SINGLE SYSTEM IMAGE NAMESPACE SERVICES TO
ITS USERS
m GR0UP SERVERS THAT HAVE A COMMON SET OF
||||| REGULAR USERS INTO DOMAINS
SERVERS HAVE REGULAR USERS (RESOURCE OWNERS)
SERVERS WHOSE REGULAR USERS RARELY USE OTHER SERVERS SHOULD
BE DOMAINS CONTROLLERS IN SINGLE SERVER DOMAINS
LOOK FOR PATTERNS WHERE GROUPS OF USERS USE THE SAME GROUPS
OF SERVERS
Ifl PROVIDE OCCASIONAL USAGE SUPPORT WITH THE GUEST
||| ACCOUNT INSTEAD OF ADDING OCCASIONAL USAGE USER IDS
MANAGING SERVERS
TOPICS AND ISSUES
MANAGING SERVERS
SERVER MANAGEMENT TECHNIQUES
■■1 11 | I ill tm
■ ■
QUEUES
DEVICES
STATUS
mm
COMMAND LINE AND FULL SCREEN INTERFACES ARE AVAILABLE TO
BOTH ADMINISTRATORS AND USER OPERATORS
"TPI T S gR E Br
mm
m
command line;
MANAGING USERS
USER PROFILE MANAGEMENT
AND
LS FULL SCREEN INTERFACE
NET USER*
MANAGING PRINT
QUEUES
PRINTER OB JECT
(OS/2 2,13 & 2.1)
NET PRINT
MANAGING SERVER
anm
NET SHARE
STATUS
(ADMINISTRATOR ONLY)
NET START
MANAGING SERIAL
DEVICES
mil
NETCOMM
LAN SERVER SPECIFIC USER ATTRIBUTES CAN ONLY BE MANAGED FROM THE FSI
MANAGING SERVERS
MANAGING ACCESS CONTROL
MANAGING SERVERS _
CROSS DOMAIN USER MANAGEMENT
gjigjjjij
USE THE PARTITION ACL (C:) INSTEAD OF
III
APPLYING THE ACL ON THE ROOT (C:\)
CREATE ACCESS CONTROL POLICIES AND
ill
CREATE GROUPS THAT CORRESPOND TO THOSE
POLICIES
IP
GRANT ACCESS PRIVILEGE TO USERS BY ADDING
SH!
THEM TO GROUPS
GIVE THE GUEST ACCOUNT ACCESS TO
RESOURCES THAT ARE NOT SECURITY SENSITIV E
TO SIMPLIFY CROSS DOMAIN SUPPORT
[§§§
- USERS (AS OF LAN SERVER 3.0)
mkz
■ ADMINISTRATORS AND ACCOUNTS OPERATORS
mm
m
USE THE DOMAIN SWITCH OF "NET PASSWORD"
n
USE NET ADMIN (ADMINISTRATORS ONLY)
m
SOME LAN SERVER SPECIFIC USER ATTRIBUTES
m
CAN ONLY BE MANAGED IN THE CURRENT DOMAIN
- LOGON ASSIGNMENTS
■ APPLICATION GROUPS
ip
LOGOFF AND LOGON TO THE DOMAIN YOU WANT TC
MANAGE
WAN CONNECTIVITY
using IBM LAN DISTANCE
WAN CONNECTIVITY
using LAN DISTANCE
NETBIOS FOR TCP/IP
LAN SERVER WITH
NETBEUI AND
NETBIOS FOR
~r n : s ir>
m
f.Owww.-i
‘r 1 - - .
WAN CONNECTIVITY
NETWARE CLIENT CO-EXISTENCE
WAN CONNECTIVITY
SHORT TERM TRENDS
LAN SERVER WITH
* THERE ARE LOTS OF ROUTERS THAT
UNDERSTAND TCP/IP AND IPX
* MORE BRIDGE/ROUTERS ARE BEING
DEVELOPED THAT UNDERSTAND
NETBIOS AND HOW TO ENCAPSULATE IT
IN ROUTABLE PROTOCOLS
* MULTIPLE PROTOCOL SUPPORT UNDER
A SET OF COMMON PROGRAMMING
INTERFACES IS COMING
WAN CONNECTIVITY
Networking Blueprint
LAN Server Tips and Techniques
summary . .
Applications
Multivendor
Application Support
Multiprotocol
Networking
Sufenetworking
Systems Management
» LAN SERVER LOGON
« CONNECTING TO RESOURCES
a ARRANGING SERVERS
« MANAGING SERVERS
a WAN CONNECTIVITY
Physical
OS/2 LAN SERVER SECURITY
LAN SECURITY ISSUES
Hit mm lam server
SECURITY
■ ■ - Development
a WORKSTATION SECURITY
» REMOTE RESOURCE ACCESS CONTROL
» DATA MONITORING
« DATA MODIFICATION
lliiliis
OS/2 LAN SERVER SECURITY
LAN SERVER SECURITY DESIGN FOCUS
° REMOTE RESOURCE ACCESS CONTROL
- LAN SERVER SECURITY MODEL
- USER IDENTITY VALIDATION WITH PASSWORD
- ACCESS CONTROL LIST ON EACH SHARED
RESOURCE
OS/2 LAN SERVER SECURITY
TOPICS
. LAN SERVER SECURITY DESIGN
- IDENTIFICATION AND AUTHENTICATION
- ACCESS CONTROL
* AUDITABILITY
»ALERTS
LAN SERVER SECURITY DESIGN
PROTECTING SERVER CAPABILITIES
LAN SERVER SECURITY DESIGN
HOW DOES A CLIENT GET A SESSION?
LAN SERVER SECURITY PROTECTS SERVER
CAPABILITIES FROM UNAUTHORIZED REMOTE ACCESS
- TO ACCESS SERVER RESOURCES, A REMOTE CLIENT
MUST HAVE A NETBIOS SESSION
- TO OBTAIN A NETBIOS SESSION, A REMOTE CLIENT
MUST HAVE A VALID USER ID AND PASSWORD
- ONCE A SESSION IS OBTAINED, THE SERVER
CORRESPONDS REQUESTS RECEIVED ON THAT
SESSION WITH THE USER ID THAT ESTABLISHED THE
SESSION
A CLIENT SENDS A SESSION SETUP REQUEST TO A
SERVER
THE SERVER "CHALLENGES” THE IDENTITY OF THE
USER ON THE CLIENT
- THE CLIENT STORES A DEFAULT USER ID AND
PASSWORD REGISTERED AT LOGON TIME THAT IS
USED DURING THE SERVER CHALLENGE
- THE USER MAY OVERRIDE THE DEFAULT PASSWORD
- THE CLIENT IS CAPABLE OF STORING MULTIPLE
PASSWORD FOR A SINGLE USER ID
■■w
LAN SERVER SECURITY DESIGN
LAN SERVER CHALLENGE PROTOCOL
LAN SERVER SECURITY DESIGN
HOW DO USERS REGISTER THEIR UID?
PASSWORDS DO NOT FLOW ON THE WIRE AT SESSION
SETUP
- THE CLIENT REQUESTS A SESSION
- THE SERVER SENDS A RANDOM NUMBER TO THE
CLIENT
- THE CLIENT ENCRYPTS THE RANDOM NUMBER WITH
THE USER’S PASSWORD (FROM THE LOGON PANEL).
- THE SERVER ENCRYPTS THE RANDOM NUMBER
WITH THE USER’S PASSWORD (FROM NET.ACC) AND
COMPARES ITS RESULT WITH THE RESULT FROM
THE CLIENT
THE DEFAULT USER ID AND PASSWORD ARE
REGISTERED USING "DOMAIN TYPE" LOGON
THERE ARE THREE TYPES OF "DOMAIN TYPE" LOGON
-NO VALIDATION
- LOCAL VALIDATION
-DOMAIN VALIDATION
ALL TYPES OF "DOMAIN LOGON" WILL ALSO REGISTER
THE USER ID AND PASSWORD WITH UPM
1
■HK
LAN SERVER SECURITY DESIGN
USER PROFILE MANAGEMENT (UPM)
Identification and Authentication
USER ACCOUNT DATABASE
- LOGON SHELL
- OS/2 LAN SERVER CLIENT
- COMMUNICATIONS MANAGER
- DATABASE MANAGER
. GRAPHICAL USER INTERFACE FOR MANAGING USER
DEFINITIONS
- NET USER AT THE COMMAND LINE WITH LAN
SERVER
« UID/PW REGISTRATION FOR SINGLE LOGON
EMULATION
EVERY LAN SERVER HAS A USER ACCOUNT DATABASE
- USER AUTHENTICATION IS ALWAYS CHECKED LOCALLY AT A
SERVER
- DOMAINS ARE FORMED VIA ACCOUNT DATABASE REPLICATION
RATHER THAN 3RD PARTY AUTHENTICATION WITH A REMOTE
VALIDATION SERVICE
- THE ADVANTAGE OF THIS IMPLEMENTATION IS THAT NO SERVER IS
DEPENDENT ON A REMOTE VALIDATION SERVICE TO PERFORM
AUTHENTICATED ACCESS CONTROL ON SHARED RESOURCES
- THE DISADVANTAGE OF THIS IMPLEMENTATION IS THAT
SYNCHRONIZATION OF THE DATABASE IS NOT GUARANTEED
Identification and Authentication
SINGLE SYSTEM IMAGE
Identification and Authentication
USER TYPES
- ADMINISTRATOR
- ACCESS TO ALL LAN SERVER OBJECTS
- ACCESS TO ALL LAN SERVER CAPABILITIES
. USERS
- SUBJECT TO ACCESS CONTROL
- OPERATORS
- SUBJECT TO ACCESS CONTROL
- AUTHORIZED FOR CERTAIN ADMINISTRATOR
CAPABILITIES
- DEFINED VIA THE LAN SERVER COMMAND LINE
INTERFACE
Mp!i||||ii ||Mms
Identification and Authentication
Identification and Authentication
OPERA TOR PRIVILEGES USER ACCOUNT GROUPS
» ACCOUNTS OPERATOR
- MANAGE USERS AND GROUPS
« SERVER OPERATOR
- MANAGE ALIASES AND OTHER SHARED RESOURCES
* COMM OPERATOR
- MANAGE SERIAL DEVICES
. PRINT OPERATOR
- MANAGE PRINT QUEUES AND JOBS
« USERS CAN BE COLLECTED INTO GROUPS TO SIMPLIFY
THE MANAGEMENT OF ACCESS CONTROL
■ DEFAULT GROUPS
- ADMINS
- USERS
=GUESTS
- LOCAL
* GROUPS CAN BE GIVEN THE SAME PRIVILEGES AS
USER ACCOUNTS
Bystems
BiPlliiiilii Wms
Identification and Authentication ACCESS CONTROL
Logon and Resource Connection FUNCTIONS
No specific privilege is granted at logon time
Your User ID and PW are validated again at the time you make a connection
request to a remote resource
Since the Password you supplied at logon time is used at resource
connection time, resource connection to a server in your iogon domain
should always be successful but is not guaranteed
Resource connection to a server outside your logon domain wii! also be
successful if the Password you supplied at logon is also valid in the
externa! domain
A different Password can be supplied at resource connection time
AUTHORIZES ACCESS TO RESOURCES
IMPLEMENTED VIA ACCESS CONTROL LISTS (ACLs)
ACLs STORED IN NET.ACC FOR FAT PARTITIONS, HPFS PARTITIONS
(ENTRY SERVER), PRINTERS, SERIAL DEVICES, AND IPCs
ACLs STORED IN FILE SYSTEM FOR HPFS386 PARTITIONS
ACL PER PROTECTED RESOURCE
» ACL ON EACH PROTECTED RESOURCE
- FILES, DIRECTORIES, PARTITIONS
- PRINTERS
- SERIAL DEVICES
- IPCs
. SPECIFIES AUTHORIZED ACCESS PERMISSION FOR USERS AND
GROUPS LISTED
. DEFAULTS TO NO ACCESS; NO ACL. NO ACCESS
. SPECIFIES AUDIT TRAIL RECORDING FOR RESOURCE ACCESS
tt CONCURRENT USER CONTROL (USE COUNT)
ACCESS CONTROL
PERMISSIONS
® N - HO ACCESS
« X- EXECUTE
a R- READ
- W- WRITE
B C - CREATE
«D - DELETE
« A - ATTRIBUTES
« P - PERMISSIONS
ACCESS CONTROL
FLOWCHART
ACCESS CONTROL
ACCESS CONTROL 386 HPFS
« FILE ACL3 STORED IN FILE SYSTEM STRUCTURE
* OTHER ACLs STORED IN NET.ACC
« ACLs NOT LIMITED (PREVIOUSLY LIMITED TO 16,000)
a 386 HPFS CAN BE LOCALLY SECURE
. ACLs INHERITED LOCALLY FROM PARENT
« DRIVE-LEVEL ACLs SUPPORTED
* ACLs REMAIN WITH RENAMED DIRECTORY
« ACLs DELETED WHEN DIRECTORY DELETED
ACCESS CONTROL
ADVANCED SERVER LOCAL SECURITY
ACCESS CONTROL
LOCAL SECURITY
* RESTRICTS ACCESS TO LOCAL FILES ON 386 HPFS PARTITIONS
* PROTECTS 386 HPFS FILES DURING BOTH REMOTE AND LOCAL ACCESS
« RESTRICTS CALLS TO APIs BASED ON OPERATOR PRIVILEGES
■ 386 HPFS FILES REMAIN INACCESSIBLE IF SERVER STOPPED OR NOT
STARTED
- 386 FILE AND DIRECTORY AUDITING STARTS AT WORKSTATION
POWER-ON
« BOOT DISK MUST BE 386 HPFS PARTITION
PiimiiUpns
ACCESS CONTROL
SECURE SHELL
ACCESS CONTROL
LOCAL GROUP
PUTS SERVER INTO SECURED MODE
STARTS PRIVILEGED SERVER PROCESSES
EXECUTES PRIVILEGED CMD.EXE TO INTERPRET PRfVILEGED.CMD FILE
AT SYSTEM INITIALIZATION
STARTS NORMAL USER SHELL
USED TO DETERMINE IF ADMIN VALIDATION REQUIRED DURING
RECOVERY FROM 386 HPFS BOOT DISKETTE
* REPRESENTS LOCAL USERS OF SERVER
- LOCAL USER GAINS PERMISSIONS GRANTED TO LOCAL
GROUP
■ LOCAL LOGGED-ON USER HAS PERMISSIONS GRANTED
TO USERID/GROUPID PLUS PERMISSIONS GRANTED TO
LOCAL GROUP
« REMOTE LOGGED-ON USER DOES NOT GAIN LOCAL
GROUP PERMISSIONS
ACCESS CONTROL
PRIVILEGED PROCESSES
AUDITABILITY
’functions
ALL PROCESSES SUBJECT TO FILE ACCESS PERMISSIONS
CONTROLLED BY PRIVILEGE OF LOGGED ON USER OR LOCAL GROUP
MANY PROCESSES RELY ON HAVING UNRESTRICTED ACCESS
TWO METHODS TO START PRIVILEGED PROCESSES
- SYSTEM INITIALIZATION (PUT COMMAND IN PRIVINIT.CMD FILE)
- OS/2 COMMAND PROMPT (TYPE PRIV FOLLOWED BY COMMAND)
SERVER CONFIGURED FOR RESOURCE AUDITING
AUDITING OPTIONS
-AUDIT ALL EVENTS
-AUDIT NO EVENTS
- AUDIT EVENTS SPECIFIED IN LIST
- DO NOT AUDIT EVENTS SPECIFIED iN LiST
■I imMmms
mummmms
AUDITABILITY
AUDIT TRAIL
AUDITABILITY
AUDIT TRAIL INFORMATION
» CONTAINS INFORMATION ABOUT RESOURCE USE AND
SECURITY
- USED FOR:
- ACCOUNTING
- SECURITY
- NETWORK USAGE
- PROBLEM DETERMINATION
« SERVER START/STOP STATUS
« LOGONS WITH USER TYPE INDICATED
« LOGOFFS WITH DISCONNECT REASON
« ACCESS START/STOP WITH REASON
« NET USE START/STOP
. ACCESS WITH RESOURCE AND OPERATION
« ACCESS PERMISSION VIOLATIONS
* INCORRECT PASSWORD CHANGES
. CHANGES TO USER/GROUP DEFINITION FILE
. CHANGES TO RESOURCE ACCESS PERMISSIONS
AUDITABILITY
AUDITING EXAMPLES
■ NET START SERVER / AUDITING : YES
- KEEPS AN AUDIT TRAIL OF ALL EVENTS
« NET START SERVER / AUDITING : LOGON; USERLIST;
RESOURCE
- KEEPS ONLY LOGON, USER LIST AND RESOURCE
EVENTS IN AUDIT TRAIL
« NET START SERVER / AUDITING : YES / NOAUDITING :
SERVICE
- KEEPS ALL EVENTS EXCEPT SERVICE EVENTS IN
AUDIT TRAIL
WAfflSystems
AUDITABILITY
CONTROLLING AUDITING OF EVENTS
• GRANULARITY TO SUBDIRECTORY AND FILE LEVEL
■ NET ACCESS AUDITING OPTIONS
- AUDIT SUCCESSFUL ACCESSES
- AUDIT FAILED ACCESSES
- AUDIT SUCCESSFUL ACCESSES OF SPECIFIC TYPE
- AUDIT FAILED ACCESSES OF SPECIFIC TYPE
AUDIT TRAIL MONITORING
AUDITING
AUDITING ACCESS CONTROL
. ACCESS TYPES
- ALL: AUDIT ALL ACCESS TO RESOURCE
- OPEN: AUDIT OPENS OF RESOURCE
- WRITE: AUDIT WRITES TO RESOURCE
- DELETE: AUDIT DELETION OF RESOURCE
- ACL: AUDIT CHANGES TO RESOURCE ACCESS
CONTROL
ALERTS
TYPES OF ALERTS
ALERTS _
CUSTOM ALERTS PROCESSING
. LOCAL ALERTS GENERATED ON SERVER (ALERTER SERVICE)
» SECURITY ALERT CONDITIONS
- AUTHENTICATION FAILURES
- RESOURCE ACCESS FAILURES
- LOGON HOURS EXCEEDED
- DC AUTHORIZATION FAILURE
a ALERT NOTIFICATION SENT TO DESIGNATED USERS (VIA LAN SERVER
MESSAGING)
« ALERT TRANSMISSION TO NETVIEW OR IBM LAN NETWORK MANAGER
- REQUIRES GENERIC ALERTER SERVICE
* ALERTS CAN BE GENERATED BY ANY APPLICATION
- NetAlertRaise
« ANY APPLICATION CAN MONITOR INTEREST IN ANY ALERT
- NetAlertStart
- NetAlertStop
« PREDEFINED LAN SERVER ALERT EVENTS
- ALERT PRINT EVENT
- alertIadminIevent
- ALERT_MESSAGE_EVENT
- ALERT_USER_EVENT
- ALERT_ERRORLOG_EVENT
! LAN Systems
OS/2 LAN SERVER SECURITY
COMPLIMENTARY SECURITY PRODUCTS
. CONTROLLING ACCESS TO THE NETWORK
- IBM 8230 CONTROLLED ACCESS UNIT
- IBM LAN NETWORK MANAGER
- IBM 8250 MULTIPROTOCOL INTELLIGENT HUB
. ADVANCED ETHERNET MANAGEMENT MODULE
. BASIC TOKEN-RING MANAGEMENT MODULE
. PROTECTING DATA
- IBM TRANSACTION SECURITY SYSTEM
- IBM 4755 CRYPTOGRAPHIC ADAPTER
OS/2 LAM SERVER SECURITY
SECURITY DIRECTIONS
. DISTRIBUTED COMPUTING ENVIRONMENT
- KERBEROS VALIDATION PROTOCOLS
* PROTECTS AGAINST SERVER IMPERSONATION
- COMMON, TRUSTED AUTHENTICATION SERVERS
- SOPHISTICATED REGISTRY AND DIRECTORY
- SINGLE LOGON, PASSWORD
- POSIX CONFORMANT PROGRAMMING INTERFACES
TO ACLS
- SECURE RPC
- GENERIC SECURITY SERVICE API
LAN Systems
OS/2 LAN SERVER SECURITY
SECURITY DIRECTIONS
OS/2 LAN SERVER SECURITY
SECURITY DIRECTIONS
CONVERTING LAN SERVER TO DCE SECURITY
- UPM USER DEFINITIONS WILL BE MIGRATED INTO
THE DCE USER DEFINITION FACILITY; USERS WILL BE
VALIDATED BY KERBEROS STYLE
TICKETS/CREDENTIALS
- LAN SERVER DOMAINS WILL BE INTEGRATED INTO
DCE CELLS
- LAN SERVER RESOURCES WILL BE ABLE TO BE
PROTECTED USING POSIX CONFORMANT ACLs
- REMOTE ADMINISTRATION FUNCTIONS WILL USE
SECURE RPC
GOVERNMENT SECURITY CERTIFICATION STATEMENT
OF DIRECTION
- OS/2 WILL BE C2 COMPLIANT
LAN SYSTEMS SECURITY STRATEGY:
- DISTRIBUTED "C2+" SINGLE SYSTEM IMAGE
• AN C2 SECURITY LEVEL EVALUATION PROCESS
DOES NOT YET EXIST FOR DISTRIBUTED SYSTEMS
IHii ;M$ Systems
Additional information _ _ LAM SERVER SECURITY
Where to go for more Information SUMMA R Y
a IBM OS/2 LAN SERVER V3.0
APPLICATIONS PROGRAMMER’S
REFERENCE (S96F-8440-GQ)
- CLIENT-SERVER PROGRAMMING
WITH OS/2 2.0 2ND EDITION (ORFALI
& HARKEY)
■ IBM SECURITY ARCHITECTURE
SPEC. SHEET (G221-3528-00)
* IBM LAN SYSTEMS STATEMENT ON
PROTOCOL INTEGRITY, 14 OCTOBER
1992
■ IDENTIFICATION AND AUTHENTICATION
- ACCESS CONTROL
» AUDITABILITY
* ALERTS
. DIRECTIONS
L AH SYSTEMS DEVELOPMENT
ISM Austin
OS/2 LAW SERVER 3.0 PERFORMANCE TUMNG
LAN SERVED 3,0 PERFORMANCE
ENABLED FOR H«MB MEMORY WITROSS* 8.1 i
- LAS ABAPTER SUPPORT RgOUfflEO
- Am OPEN FILE INFO >1SMB FOE? ALL ADAPTORS
, SIDEBAND SUB*PROTOCOL
- »xi exolmsiv*, patw tmmm
-IWiiWVe&TRAN»»«rSWFER^fZee^MA>.l«f>'l«>
- mm ON 0$tf, OUR SPOTS AND APVAWe&^NVE«
, FASTER DOS HffiTRIOS WCLUDING HEMS SUPPORT
. DOS LAN REQUESTER CODE SCRUB
|||||gj||^^ -.v.,,.. jm.|
im server performance
p - TOPICS
♦ PERFORMANCE ENHANCEMENTS
• - CAPACITY ENHANCEMENTS
. TUNING CONSIDERATIONS .
. PERFORMANCE COMPARISONS
LAN SERVER 3 M PERFORMANCE
* IMPROVED MULTI-ADAPTER SUPPORT
. - MULTIPLE ADAPTERS ON SAME LAN SEGMENT
•, ~ AUTOMATIC SESSION LOAD BALANCING
- INCREASED SERVER THROUGHPUT
* INCREASED FILE HANDLE LIMIT
* - FROM 8KTO MK WEN FILE HANDLES
? mi
lilMWi
TUNING CONSIDERATIONS
► SERVER TUNING
* TO? 3 PERFORMANCE PARAMETERS for
ANY OS/2 LAN SERVER
- 1) CACHE - Allocate as modi cache as possible
- 2> NUaftEQS VFS - 3 Per Ses$Ktf»
~ 3>NUMBIG*BUFS - Check NET STATISTICS to see
ll stiver l$ tanning wit
Tufting Considerations
► Why Entry Server?
* Dedicated Prim Serving
* Systems with Only PAT Pile System
Partitions
■ * Systems Sharing Only Serial Devices
* Servers Only Verifying Logon
SERVER TUNING
► MAXIMUM NUMREQBUFS Formula
UmmiM iSlUMBEOBUFS *
[ 591 IS - 4*(&IAXUSERS) -
5S9*(nuin_adapters in server) -
$H min{2*MAXUSERS>1283 ) -
$7*NUMBiGBUFl/§?
LAN Systems \
► ENTRY SERVER TUNING •
* OBSERVE SERVER BEHAVIOR IN
ACTUAL LOAD SITUATIONS
_ j^ggogggirg iwgnis wb i f ^ecs £ rd@d
• - tfc# NET ERROR and NET STATISTICS eamntahds
~ Using memory for cache wilt yield belter ^
peftarmaoce than aver resetting ragbufa of
higbufs; tuna reqbate and bigbufs eoth*t thay ara;
barely exhausted during highest load conditions. j
TUNING CONSIDERATIONS
* CACHE VS VBiSK
* CACHE IMPROVES PERFORMANCE IF
THE SAME DATA IS ACCESSED
REPEATEDLY
* CACHE IS NOT AS HELPFUL IF .
DIFFERENT DATA IS REOUESTED AT •;
EACH REQUEST
TUNINO CONSIDERATIONS:
*■ OS/2 FILE SYSTEM TUNINO
. A$$f$N CACHE FOR FAT RARTITJONSTO
KSKCACHE.EXE
. ummtft # pat aafitmosis- &*m
. ASSIGN CACHE FOR HPFB PARTITIONS TO . .
HPFSJPS
- MAXIMUM CACHE SHE; SMB
« ALLOCATE AS MUCH MENORV FOP CACHE AS
POSSIBLE
- REGOMMESD fcfflfJlMUSI OF 6MB f 08 16MB MACHINE
» IF APPLICATIONS PERFORM BETTER WITH LABOR j
CACHES, ACCESS- BATA FROM A FAT PARTITION
il: ; . WITH A LAROE CACHE : ASSSGNEBTOOiSKCACHE 1
mmmmmmm
advanced server wmm
* Enfry m Advanced Toning
Consicf^fpioiTS
- The Advanced Server only supports life requests
tar fifes stored or an HPFS386 partitions? ail older
re<juesteere stl dandled by Use Entry Server /.:
» FAT Fife System requests :
IM#li#SM®iiilliil!^SIII!#ii^^
* Serial Efevteee
«• Tire Entry Server must be toned even mi art
Advanced Server for its resources supported by ' i
the Enlry Server
tuning nfs/2 and neisios
« ALLOCATE NETBIOS RESOURCES (PROTOCOLS
NETBEULNIF SECTION)
-sE$sfe»$
; - «08«- (z T8@£S SESSiOfiS 10 a roa* «rf 700 war afi adajrter csr«
~8ame&
-ttfeSEFARAMETff^IifeSTeeOffeATEBTMAM 1M VALUES «
iBMUfeiNI OS T«E APWOFWTE 8ET* LINE
- art «ei»os «^ucatio«s wusr m oatse^BEo
{C8*e, OB/i, Lute Slates, ete.)
I0QON PERFORMANCE
, INCREASE the T1 TIMES VALUE (on server) on .!
WANS Of SERVERS EXPER^ICBVO SESSION ISMS
* advanced server FILE SYSTEM
1 1 * ASSIGN CACHE IFOR HRFSS86
PARTITIONS TO 0 ACHEmEXE
- DEFAULT CACHE SCE: M% OP AVAILABLE
MEMORY
- SUPPORTS CACHE SIZES OREATERTHAN1SMB
: - ADVANCED SERVER PERFORMANCE
BENEFITS ARE ONLY REALIZED ON
HPFS 3 B 6 PARTITIONS
- ALLOCATE AS MUCH MEMORY FOR
CACHE AS POSSIBLE
* RECOMMENDED MINIMUM OF SMB FOR 16MB ’’ ■
HI MACHINE llSIIllllllillli : '"'ll
TUNING CONSIDERATIONS
* MEMORY MldBMIZATION ON CLIENTS '
.«o$/2 client Si!l!l!iiiSiillJ!l®iliHll
- REDUCE ffiaWGHKBUF TO & fF WOT BUWHtSQ MULTIPLE OS®
SESSIONS
" {MATCHT?iESETFtM©-ATTtffi
S£BV£f&
- 8 SMA&K OUT « 6 T« 0 S, 0 $a (8 OofeKLSYe tf 80 OTBEB
. • SETffiOS APPtiCATIGHS ARE BUfJfflWS
£ $eT FWTeCTMCt TO VEsicowi&sysHPooA supports
fTDT REQUIRED
TUNING CONSIDERATIONS ■
* OTHERTECHNIQUE
* KEY DOCUMENTATION
- ls 3.0 network administrators ref* vql 2;
* OSSiRVi THE SYSTEM
* SYSTEM PERFORMANCE MONTTOR/a 2.6 or
NejVtew Monitor
♦, SERVER ERROR LOOS AND STATISTICS
- cacheshs monitoring utility
, USE NETWORK ANALYZERS TO:
- DETECT UNUSUAL ARPUCATON BEHAVIOR
- ISOLATE SOURCES OF NETWORK LOAD
» CAPTURE ERRORS
- MEASURE UNE UTIMBAftON
TUNING CONSIDERATIONS-
* TOOLS
OMFOLS 30
» TUNING LAN SERVER 3.6 IS EGUfYAU0VT TO
TUNWG LAN SERVER 2 jS
* CAN WE CNFGLS39 FOR LS 2.6 OR tS 3.6
. IT WAS WRITTEN IN CONJUCTON WITH TOE . .
DEVELOPMENT TEAM
» AVAILABLE ON OS/2 BBS or COMPUSERVE (within
mmmMKTWQim
TUNING CONSIDERATIONS
:3Sil
* ENTRY SERVER CONSIDERATIONS;
- EAT CACHE (66 SKCACME)
* 14 . 4 MSMajctowm
* THRESHOLD UP f0 S4KS
4 os/a m adcs lazv writs
- HFFS CACHE (CACHED
. -s.mm m&mm
, THRESHOLD 0? TOS4&&
« lASTWWfm
-WMUtt'MNS
* *ftJ**REQ8VFS C R2B ACTWB CLIPC}
* H¥»8i©8VFS6S PER ACTIVE COBNT}
- PROTOCOUNI
-SESSIONS
,«CBS
* SUMMARY
* ADVANCED STIVER CONSIDERATIONS
-HFFS3S6 CACHE SIZE
* SYSTEM DEFAULTS TO 20%
* CACHE SIZE mwm ONLY BY AVAILABLE
MEMORY IN TOE SYSTEM
- CACHE3RB MONITORING UflWTY
» FINE TONE CACHE S&E
- MONITOR CACHE HIT RATOS
- numregbufs
» s per SESSION ;p|||iIii|:li!;l|IMlil
.' * CHECK NET ERRORS
COMPARISONS
LANQUgST LABS
"li« has Improved the pertororoee of 1AM Server 3.0 #o
dramatfcaJly that, trader U magablt^w<eeeowl Token
M»g, LA Pi Server now edges o«f LAM Mmsgat miSm
fastest of the three feadtag LAJf operating systems -
NetWare, LAM Manager, and LASS Server,”
« PERF^WANCEBe^HWsWKCCWAR^N
:;• * =14^.::; | |jS ^:j=: if k :ftl:
» COPIES OP THE REPOSTT CAH BE OiTAMEO '
1 WCWOH 1 -S 0 CMBKMFAX oootwir 2347
d 2340 .
Hill pg^0R»iAHCE.Cal<8PA^I8.ONS i 1111111
Nallomst Software Testing Laboratories •
(, U*M Server had the highest Overall Performance Score on
SJSJVs lest cefflBgamtfen across m fwe ^WordPerfect £1,
- Lofets 1-2-3, dBase IV, xcopy, cc:Mail 3.2} appicasion ■ •
based tests. (Ownparteg im Server $.0 Mroneed, tm
Manger 2.1a, sad Safware3.il)"
lah mmm H performance
performance comparisons
Overall Performance Score
Novell Netware 3.11
* SUMMARY
* PERFORMANCE ENHANCEMENTS
. CAPACITY ENHANCEMENTS
* TUNING CONSIDERATIONS
'• * PERFORMANCE COMPARISONS
LS07
IBM'S REMOTE LAN ACCESS
CAPABILITY
Frank Grubbs
LS07
IBM LAN Systems
Austin, Texas
LAN Distance Overview
LAN DISTANCE REMOTE
LOTUS NOTES
TERMNAL BjOJLATON
RLE PR NT REQUESTER
OTHER CLENT SETW 51 APPS
NETWARE SBWER
Features / Ease of Use
Cost Per Connection
BM LAN SERVffl
NOTES SERVBt
(ISON) a(ed Service a 9 it! >l Network
AGENDA
REMOTE LAN ACCESS TECHNOLOGY
LAN DISTANCE FEATURES
FUTURE DIRECTIONS
• IMPLEMENTATION EXAMPLES
SUMMARY
1
REMOTE LAN ACCESS TECHNOLOGY
► REMOTE CLIENT
- EXTENSION TO CLIENT/SERVER
APPLICATION
► REMOTE CONTROL
- HOST PC FOR APPLICATION
- MAPS SCREEN / KEYBOARD TO REMOTE
► REMOTE NODE
- EXTENDS LAN TO REMOTE
- HARDWARE / SOFTWARE SOLUTIONS
■ ENABLES A WORKSTATION NOT PHYSICALLY
CONNECTED TO A LAN TO DIAL-IN AND OPERATE AS
IF IT WERE ON A LAN
■ ENABLES CREATION OF A VIRTUAL LAN FOR
POINT-TO-POINT ENVIRONMENTS
■ TWO CONCURRENT CONNECTIONS SUPPORTS
CREATION OF VIRTUAL NETWORKS (OS/2)
LAN DISTANCE
COMPONENTS
► REMOTE
-OS/2
-WINDOWS
► CONNECTION SERVER
-OS/2
-CONNECTION SERVER
- CONNECTION SERVER (8 PORT)
LAN DISTANCE
CONNECTION SERVER
■ ESTABLISHES A CONNECTION AND ROUTES TRAFFIC
BETWEEN THE LAN AND WAN
■ ENFORCES SECURRY ON/OFF THE UN
■ MANAGES THE "OUTER” NETWORK
■ PROVIDES AUDIT TRAILS AND ADMINISTRATION
■TWO VERSIONS
-CONNECTION SERVER
-CONNECTION SERVES (8 PORT)
LAN DISTANCE
SUPPORTED CONNECTIVITIES
► LOCAL AREA NETWORK
-TOKEN RING & ETHERNET
► WIDE AREA NETWORK
-ASYNCHRONOUS
-SYNCHRONOUS
► SWITCHED
„ mqu switched
— ISDN
- BASIC RATE
> PRIMARY RATE
“X.25
- CBX/PBX (ROLM)
► NDIS INTERFACE (LAN/WAN)
► NETBIOS
► NETBEUI
► 802.2
* ND1S/ODS
► IPX
1 Meg File Copy Time
(Avg 8 Clients)
Elapsed Time (Minutes)
MSRAS DCARLN Shiva LAN Distance
Remote Access Product
LAN DISTANCE
SECURITY OPTIONS
► USER ID/PASSWORD
► CALL BACK
► PASSWORD ENCRYPTION
► WORKSTATION ADDRESS IDENTIFICATION
► VALID LOGON TIME INTERVALS
► UNAUTHORIZED LOGON LIMIT
►ACCESS PRIVILEGE LEVELS
► CONFIGURABLE LOGON PARAMETERS
► INITIAL APPLICATION EXIT
► LAN APPLICATION SECURITY
LAN DISTANCE
ADMINISTRATIVE FEATURES
► CALL STATUS DISPLAY
► ERROR LOGGING
► AUDIT/SECURITY LOGGING
► STATISTICS LOGGING
► REMOTE INFORMATION RETRIEVAL
► INTERNAL EVENT TRACING
LAN DISTANCE
USER INTERFACE
OBJECT ORIENTED GRAPHICAL INTERFACE (OS/2
2.X, CUA91)
-CONFIGURATION
-DIAL/CALL STATUS
-ADMINISTRATION
-HELPS
INSTALLATION
-QUICK INSTALLATION OPTION
-C/I/D ENABLED
-INSTALL FROM DISKETTE OR LAN
SHUTTLE BETWEEN LAN AND REMOTE ATTACHED
ENVIRONMENTS
LAN DISTANCE
Phone Book and Call Status Screen
LAN DISTANCE
NEW FEATURES RELEASE 1.1
► WINDOWS CLIENT
► LAN WORKSTATION
-DIALOFF LAN
-CASUAL BRIDGING
► ENHANCED CONNECTIVITY
-ASYNCHRONOUS
-SYNCHRONOUS
-ISDN
-X25
-ADDITIONAL ADAPTERS & MODEMS
► PERFORMANCE & USABILITY
LAN DISTANCE
FUTURE DIRECTIONS
► ADDITIONAL CLIENT SUPPORT
► ENHANCED SECURITY
► ENHANCED CONNECTORS
► PERFORMANCE
► FEATURES & EASE OF USE
► EVALUATION SUPPORT
IMPLEMENTATION EXAMPLES
PROGRAMMER - WORK AT HOME
LOTUS NOTES
LAN REQUESTER
COMMUNICATIONS MGR / 2
COMPILERS & DEBUGGERS
SOURCE LIBRARY SYSTEM
IBM LAN SERVER
NOTES SERVER
NOTES SERVER
TIME AND PLACE SERVER
8 W
rnur
LOTUS NOTES
CC MAIL
IBM TIME AND PLACE
NETWARE SERVER
REMOTE ADMINISTRATION
NETWARE ADMIN
LAN SERVER ADMIN
NOTES ADMIN
SPM/2
LAN NETV1EW
REMOTE CONTROL
LOTUS NOTES
SERVER
LAN DISTANCE
CONNECTION
SERVER
DISTRIBUTED MEETINGS
REMOTE L0CAL
MEETING ROOM MEETING ROOM
PERSON-TO-PERSON
LAN DISTANCE
SUMMARY
- CONNECTIVITY
-ETHERNET AND TOKEN RING
- ASYNC, SYNC, ISDN, X.25
-PC ADAPTER AND DEVICE DRIVER
-APPLICATION TRANSPARENCY
n PERFORMANCE
a SECURITY
-USER ID AND PASSWORD
-CALLBACK
-TERMINAL ADDRESS IDENTIFICATION
-LOG ON POLICIES
-SECURITY ADMINISTRATOR
=. FEATURES & EASE OF USE
-GRAPHICAL USER INTERFACE
- LOCAL / REMOTE ADMINISTRATION
-LAN/WAN SHUTTLE
-COSTPER CONNECTION
- ENTRY OPTION WITH NON DEDICATED SERVER
- LARGE NUMBER OF CONCURRENT SESSIONS
LS08
INTEROPERABILITY WITH
LAN SERVER 3.0
LAN SYSTEMS DEVELOPMENT
IBM Austin
MIGRATION
MIGRA TION SCENARIOS
. LAN SERVER 1.0 TO 3.0
- USE THE LAN SERVER MIGRATION UTILITY
- LAN SERVER 1.X, 2.0 TO 3.0
- NET.ACC AND THE DCDB ARE THE SAME
- NO SPECIFIC MIGRATION STEPS REQUIRED
. ENTRY TO ADVANCED
- RUN BACKACC THEN RESTACC ON THE HPFS
PARTITIONS TO MIGRATE THE ASSOCIATED
ACLs FROM NET.ACC TO THE HPFS386
PARTITION
SBM LAN Systems
Interoperability W/LAN Server 3.0
TOPICS ”.
■ MIGRATION
. INTEROPERABILITY WITHIN FAMILY
. INTEROPERABILITY OUTSIDE FAMILY
- CO-EXISTENCE WITH OTHER NOSs
ISM LAN Systems
interoperability Within Family
Family Clients to LAN Server 3.0
. PCLP TO LAN SERVER 3.0
- PCLP EXTENDED SERVICES CLIENTS CANNOT LOGON TO 3.0
DOMAINS
- PCLP CLIENTS CAN ACCESS RESOURCES ON 3.0 SERVERS
. LAN SERVER 1.0 CLIENTS TO 3.0
- LAN SERVER 1.0 CLIENTS CANNOT LOGON TO 3.0 DOMAINS
- LAN SERVER 1.0 CLIENTS CAN ACCESS RESOURCES ON 3.0
SERVERS
* LAN SERVER 1.2 - 2.0 CLIENTS TO 3.0
_ LAN SERVER 1.2 - 2.0 CLIENTS CAN LOGON TO 3.0 DOMAINS AND
ACCESS RESOURCES ON 3.0 SERVERS
- BOTH DOS AND OS/2 CLIENTS
SBX LAN Systems
Interoperability Within Family
LAN Server 3.0 Clients to Family Servers
■ TO PCLP SERVERS
- 3.0 CLIENTS CANNOT LOGON TO PCLP SERVERS/DOMAINS
- 3.0 CLIENTS CAN ACCESS SHARED RESOURCES ON PCLP
SERVERS
* TO LAN SERVER 1.0 SERVERS
- 3.0 CLIENTS CANNOT LOGON TO 1.0 DOMAINS
- 3.0 CLIENTS CAN ACCESS SHARED RESOURCES ON 1.0 SERVERS
■ TO LAN SERVER 1.2 - 2.0 SERVERS
- 3.0 CLIENTS CAN LOGON TO 1.2 - 2.0 DOMAINS
- 3.0 CLIENTS CAN ACCESS SHARED RESOURCES ON 1.2 - 2.0
SERVERS
IBM LAN Systems
Interoperability Outside Family
Different Clients to LAN Server 3.0
- LAM SERVER 3.0 SUPPORT THE 2.1 SMB
DIALECT AND ITS PREVIOUS VERSIONS
- SMB DIALECTS ARE DOCUMENTED IN THE
"X/OPEN SMB PROTOCOL SPECIFICATION, V2"
- LAN SERVER 3.0 CAN SUPPORT
RESOURCE REQUESTS FROM SMB
COMPLIANT CLIENTS
- MICROSOFT LAN MANAGER
- LAN MANAGER OEM CLIENTS
- WINDOWS FOR WORKGROUPS
-ETC.
Interoperability Within Family
FMmTsERVERS Jn 3.0 DOMAINS
- LAN SERVER 1.0 SERVERS CANNOT BE
IN 3.0 DOMAINS
■ LAN SERVER 3.0 CAN BE THE DOMAIN
CONTROLLER FOR MIXED LEVEL
DOMAINS
- LAN SERVER 1.2 THROUGH LAN SERVER 2.0
- LAN SERVER 3.0 CAN BE AN
ADDITIONAL SERVER IN A DOWN LEVEL
LAN SERVER DOMAIN
- THE DOMAIN CONTROLLER CAN BE LAN
SERVER 1.2 THROUGH 2.0
IBM LAN Systems
Interoperability Outside Family
LAN Server 3.0 Clients to Other Servers
« TO MICROSOFT LAN MANAGER SERVERS AND
GENERAL LAN MANAGER OEM SERVERS
- 3.0 CLIENTS CANNOT LOGON TO L.M. STANDALONE SERVERS
- 3.0 CLIENTS CAN LOGON TO LAN MANAGER DOMAINS (NO
LOGON ASSIGNMENTS OR APPLICATION GROUPS)
- 3.0 CLIENTS CAN ACCESS RESOURCES ON L.M. SERVERS
- TO MICROSOFT WINDOWS FOR WORKGROUPS
PEERS
- WFWG PEERS USE SHARE LEVEL SECURITY
- 3.0 CLIENTS CAN ACCESS RESOURCES ON WFWG PEERS
* TO GENERAL SMB SERVERS
- 3.0 CLIENTS CANNOT LOGON TO GENERAL SMB SERVERS
- 3.0 CLIENTS CAN ACCESS RESOURCES ON GENERAL SMB
SERVERS
IBM LAN Systems
IBM LAN Systems
Interoperability Outside Family
SMB Servers in LAN Server Domains
- GENERALLY, ONLY LAN SERVERS
SHOULD BE !N LAN SERVER DOMAINS
- NETLOGON WILL REPLICATE FROM LAN
SERVER TO LAN MANAGER
- A LAN SERVER ADDITIONAL SERVER WILL NOT
START IN A DOMAIN WHERE THE DC IS A LAN
MANAGER SERVER
- ALIASES CANNOT BE DEFINED FOR LAN
MANAGER SERVERS IN A LAN SERVER DOMAIN
IBM LAN Systems
Interoperability Outside Family
IpcmmoPERABiufY —
- NETBIOS
- APPLICATIONS UTILIZING IBM AND MICROSOFT
NETBIOS IMPLEMENTATIONS GENERATE NATIVE
NETBIOS FRAMES
- APPLICATIONS UTILIZING THE NOVELL NETBIOS
IMPLEMENTATION GENERATE IPX
ENCAPSULATED NETBIOS FRAMES
- WHEN NETBIOS FOR TCP/IP IS INSTALLED, THE
IBM NB30 INTERFACE GENERATES TCP/IP
ENCAPSULATED NETBIOS ONLY
- APPLICATIONS MUST GENERATE THE SAME
TYPE OF NETBIOS FRAMES IN ORDER TO
COMMUNICATE
ISM LAN Systems
Interoperability Outside Family
- MAMED PIPES
- LAN SERVER AND LAN MANAGER REMOTES NAMED PIPES USING
SMBs ON NETBIOS
- NETWARE REMOTES NAMED PIPES USING NCPs ON IPX
- NAMED PIPES APPS RUNNING ON LAN SERVER CAN CONNECT
TO NAMED PIPES APPS RUNNING ON LAN MANAGER
Cl 9 A earn mnrr» a nnr*
- mmivie:e*' rirco Mrro
RUNNING ON LAN SERVER CANNOT
CONNECT TO NAMED PIPES APPS RUNNING ON NETWARE
- BOTH TYPES OF CLIENT SIDE NAMED PIPE SUPPORT CAN
CO-EXIST ON A CLIENT VIA OS/2 IFS UNO POLLING
IBM LAN Systems
Interoperability Outside Family
- NETBIOS PROGRAMMING INTERFACES
- THERE ARE 2 NETBIOS PROGRAMMING INTERFACES: NB30 AND
NETBIOS SUBMIT
- NB30 IS THE ONLY NETBIOS INTERFACE INCLUDED IN NTS/2
- WHEN LAN SERVER REQUESTER IS INSTALLED, BOTH NB30 AND
NETBIOS SUBMIT ARE AVAILABLE
- WHEN NETBIOS FOR TCP/IP IS INSTALLED WITH LAN SERVER,
ONLY TCP/IP ENCAPSULATED NETBIOS IS AVAILABLE VIA NB30
- WHEN NETWARE IS INSTALLED, NETBIOS SUBMIT GENERATES
IPX ENCAPSULATED NETBIOS
- WHEN NETWARE AND LS ARE INSTALLED, NETBIOS SUBMIT
GENERATES EITHER NATIVE NETBIOS OR IPX ENCAPSULATED
NETBIOS VIA THE VIRTUAL MULTIPLE ADAPTER SUPPORT IN THE
LM10 NETBIOS INTERFACE
IBM LAN Systems
Interoperability Outside Family
’VOUBLE HOT’ RESOLJRCE ACCESSING
« LAN SERVER - LAN SERVER * ANY NOS
CLIENTS »ANY NOS SERVER
CLIENT
IBM LAN Systems
CO-EXISTENCE W/OTHER NOSs
CONNECTIVITIES WITH OS/2
AS/400
WITH PC
SUPPORT
■ OS/2 IS THE PREMIER CLIENT CO-EXISTENCE PLATFORM
IBM LAN Systems
CO-EXISTENCE W/OTHER NOSs
CO-EXISTENCE ON THE OS/2 CLIENT
- LAN SERVER CLIENT CAN CO-EXIST
WITH OTHER REMOTE FILE SYSTEM
CLIENTS
- NETWARE
- PC SUPPORT
-NFS
- ETC.
IBM LAN Systems
CO-EXISTENCE W/OTHER NOSs
NETWARE OS/2 CLIENT
IBM LAN Systems
CO-EXISTENCE W/OTHER NOSs
NETWARE 4M ON OS/2
■ DISTRIBUTED SERVICES ARE SEPARATE
- USER DEFINITIONS
- DIRECTORY
- ACCESS CONTROL
« DATA THAT NEEDS TO BE SHARED WITH BOTH
LAN SERVER AND NOVELL CLIENTS MUST BE
KEPT ON THE NETWARE PARTITION
- LOCAL ACCESS TO NETWARE DATA IS ONLY AVAILABLE
THROUGH THE NETWARE REDIR
- LAN SERVER MUST GO THROUGH THE NETWARE REDIR TO
SHARE COMMON DATA
IBM LAN Systems
JIM Operating System/2
LAD/2 Description
■ Productivity Enhancer
® Automated Installation &
Migration
- System Software
- Applications Software
BUM Operating System/2
''MWl Op e rating System/2
Installation Scenario
■ 40 Clients ■ Token Ring
OS/2 2.0 Extended
Services
LAN Server
NTS/2 LAPS
Operating System/2
LAD/2 - Basic CID
Comparison
CID LAD/2
■ Configure 90 min 25
Parameters m j n
■ Create
SRVfFS IN!
PH e 30 min Auto
- Modify LCU
Command File 45 min Auto
I MMOperating System/2
;iil Operating System/2
NetWare® 4.01 Server
for OS/2®
(LS 12)
Christopher Cherry
Systems Engineer
IBM PSP, Boca Raton, FL
NetWare History
Version
IMon-Dedlcated ?
liiillllMi
iilHjiili
Features - NetWare 4.01
Features - Concurrent OS/2
Provides features of NetWare 4.01
- Directory Services
- Memory Protection not supported
- Uses NetWare file system
- Runs NetWare 4.01 NLMs unmodified
Accessible from all Clients
- DOS, Windows, OS/2, Mac,Unix
Preemptive Multitasking of OS/2
- NetWare and OS/2 applications run
concurrently
OS/2 applications can share devices with
NetWare
- NSC and DC in current release
- Disk volumes and CD-ROM In future
OS/2 applications can use files stored on the
NetWare server
Features - Performance
► Up to 90% of Native NetWare Performance
- small overhead due to shared resources
► Dynamically adjustable performance tuning
- user-adjustable
- controls amont of processor time given to
NetWare
System Structure
OS 2 Device Drivers
VNETWARE.SYS
PNETWARE.SYS
OS/2 Virtual Device Driver (VDD)
- Supports SERVER.EXE
- Provides server interface to the machine
► interrupt support
► Memory support
► Console management
- Timer support
OS/2 Physical Device Driver (FDD)
- Communicates with and controls physical
devices
► Register/Unregister Interrupts
► End of interrupt notification
► Timer ticks
► Memory allocation
NWOS2.EXE
Adapter Sharing - IPX Routing
► 32-bit Ring 3 OS/2 Application
- Protects OS/2 in the event of server failure
- 4 threads of execution
► Main thread (Server)
► DOS fife I/O
► Screen handling
► Keyboard
- Single adapter supports
both NetWare client and
server
- Client can login to
server in the same
machine or on the
external network
- Supports same network
topologies as NetWare:
► Token Ring
► Ethernet
- ArcNet
Adapter Sharing - Bridging
NetWare client/server
and OS/2 applications
share a single adapter
Provides source routing
bridge from local client
to external network
Supports both CDS and
NBIS based protocols
Token Ring ONLY
Printer Sharing
NPRINTER.NLM
modified to recognize
OS/2 environment
Uses OS/2 spooler API
User/Supervisor
manages NetWare print
queue with existing
tools
NetWare 4.01
♦
.... Spooler API
OS/2
l— \
- Hardware and device
interaction is consistent
with the OS/2
architecture
- OS/2 applications
protected from server
HLMs
Product Packaging
installation
- Packaged as an "add-on"
for NetWare Version 401
- Contains updated LAN
device drivers and
NPRINTER.NLM
- Contains ail OS/2 support
modules
> MWOS2.EXE
> VNETWARE.SYS
> PNETWARE.SYS
* BSKSHARE
> LANSHARE/TOKENSHR
> Determine overall system requirements
- OS/2:
* 4MB RAM (8MB or more recommended)
► 30 Mb disk space (include space for swap file)
- Disk space desired for applications
► NetWare Client for OS/2 (4.5Mb DASD+2Mb RAM)
- NetWare:
► Use NetWare planning guide
► 12Mb or more recommended
► Disk space desired for network
- Add OS/2 Requirements and NetWare Requirements
installation
Installation
1) Install OS/2
h Partition disks, leaving
desired space for NetWare
= if sharing a physical disk,
NetWare partition must be
defined as ’"free space” and
remain unformatted
® Follow normal OS/2
installation procedure
2) InstaSS NetWare for OS/2
* uses same installation
program as NetWare Client
a Set NetWare HAM
requirement In NET.CFG
® install NetWare client with
adapter sharing if only 1
network adapter Is
installed (optional)
Installation
3) install NetWare V4„01
« Follow instructions for native
NetWare V4.01
■ Use OSKSHARE to share hard
drive with OS/2
- Use LAN SHARE to share NIC
<* install program is OS/2 aware,
will automate most of the
procedure
Utilities - NetWare Administrator
- NWADMSN.EXE
- View and Manage
Distributed Directory
Tree
> Users
o Servers/Volumes
> Printers
- Presentation Manager
based
> Drag and Drop
operation
= Provides same function
as NetWare 3.11
character based utilities
- SYSCON
» FILER
Memory Model
- NetWare Memory
allocated at startup
» Memory is Socked and
not available to OS/2 or
OS/2 applications
- Memory must be
contiguous
- OS/2 limit of 512MB
- Configured via NET..CFG
0x0000 0000
UTILITIES - NetWare Monitor
- Presentation Manager
based
- View OS/2 and NetWare
CPU utilization
- Dynamically adjust the
NetWare performance
tuning parameter
- Only true performance
view
- Since MONSTOR.NLM
runs in multi-tasked
process , it does not
show accurate
utilization numbers
OS/2 CPU
Utilization %
NetWare CPU
Utilization %
Direction - OS/2 SFS Support
- OS/21FS mountable by
NetWare
NetWare
- Data on HPFS, FAT, and
GD-ROy partitions
visible to NetWare
clients
- Share tape backup
resources
- IPG mechanism for
NetWare NLNl's and
OS/2 Applications
Direction - Memory Sharing
- Eliminate need for fixed,
contiguous memory
block
- PNETWARE.SYS will
remap randomly located
OS/2 memory pages to
appear to NetWare as
one large, contiguous
address space
Allow remote installation
of NetWare for OS/2 and
OS/2 clients
Response file driven
(G/l/D)
NetWare Server for OS/2
can currently act as a
O/l/D Code Server
Code NetWare
Server Client
NetWare for OS/2
Server
Summary
► Single Hardware Platform
for all LAM Applications
- Full OS/2 Function
- Full NetWare 401
Function
- Concurrent Use of OS/2
- Preemptive Multitasking
» Supports Multiple
Concurrent LAN
Protocols
- High Performance
LS13
NetWare® Interoperability
with
OS/2® 2.x
(LSI 3)
Christopher Cherry
Systems Engineer
IBM PSP, Boca Raton, FL
Products Involved
► NetWare Client for OS/2
► Banyan Vines Requester
- TCP/IP Support for OS/2
- NFS,X/Windows,DOS kits
» IBM LAN Server
*- IBM Communications
Manager/2
► IBM DB2/2with Remote
Data Services
► IBM Network Transport
Services/2
► AS/400 PC Support for OS/2
► Lotus Notes
OS/2 Client Connectivity Example
. NETWARE CLIENT FOR OS/2
. IBM TCP/IP FOR OS/2
. OS/2 IBM LAN REQUESTER
- OS/2 VINES REQUESTER
o AS/400 PC SUPPORT FOR OS/2
. LOTUS NOTES
What WHS 1 Learn?
A little history
How does it work?
Product interoperability
Installing and configuring the
products
Things to watch out for
Future directions
Sources of information
Acronyms
Client Connectivity Model
Who Uses What Protocol?
IPX/SPX
- NetWare, Lotus Notes,
WinOS/2
Vines IP
- Banyan VINES
TCP/IP
- NFS,X/Win,RPC,Telnet,SMTP
NetBIOS
- LAN Server (802.2 for RPL)
- Lotus Notes
- DB2/2
IEEE 802.2
- Communications Manager/2
- DB2/2
- NTS/2
- AS/400 PC Support
Client Coexistence ’Hot Spots'
Adapter sharing
NetBIOS application support
DOS application support
(VDM/VMB) on OS/2 2.x
CONFIG.SYS statement
ordering
Protocol Configuration
IBM/Novell Relationship
In February of 1991,
NetWare from IBM
announced. IBM will
distribute, license, service
and support Novell NetWare
products (NetWare from
IBM).
► NetWare for RISC
System/6000 (AIX)
► NetWare for OS/2
► NetWare server products
- NetWare for SAA
■■ 11*1
IBM/Banyan Relationship
► IBM and Banyan work
together to achieve client
coexistence:
- Banyan ships IBM
developed NDIS support
modules
- OS/2 2.x Banyan VINES
client support
- Propagate OS/2 NDIS
support
- Available with VINES 5.50
Release
ISO Reference Mode! Interoperability
ISO Reference Model
► Novell Open Data-Link Interface (ODI)
- Proprietary
- Used by NetWare clients (DOS,OS/2) and servers
► wide installed base
- ODS layer handles ail bindings
► uses NET.CFG
► SBM/3COM Network Driver Interface Specification (NDIS)
- Open
- Used by IBM, Banyan, Microsoft, others
► wide vendor support
- Separate protocol manager
► uses PROTOCOL.INI
MDiS Environment/Architecture
■ PROTOCOL DRIVERS
i MAC DRIVERS
1 PROTOCOL MANAGER
I NETBIND
IBM LAM Server Client Structure
IBM NTS/2 Client Structure
IBM ES Client Structure
Banyan VINES Client Structure _ IBM TCP/IP Client Structure
OS/2 Client 'MAC Layer' Option:
ODI2NDI Client Structure
► Recommended where NDIS Is the installed base
► No performance degradation
► Available with NTS/2 1 „x and LS 3.x
► Presentation Manager configuration
- No manual updates to CONFIG.SYS or
PROTOCOL.INI
► Run NWFIXUP if NTS/2 Installed before NetWare
Client
ODINSUP Features
MAC Interface Convergence
► Recommended where ODI is the Installed base
► Available with NetWare Client
► 8-10% performance degradation for NDIS protocol
stacks
► Installation now automated
e Doesn't work with IBM LAN Network Manager
* Supports Packet Burst and Large Internet Packets
► No convergence on ODI or NDIS for:
- DOS
- Windows 3.1
- OS/2 1.x and OS/2 2.x
► Windows NT, Windows 4.0
- NDIS 3.0
► OS/2 for Power PC
- No decision yet, evaluating both options
"Top 10" tips for OS/2 Clients
► Remove pervious versions of NetWare
Client before installing
► Obtain latest CSDs
► Add Ethernet 802.3 frame type to NetWare
clients in NetWare 3.11-based networks
► Make sure NDIS drivers are IBUS certified
to work with OS/2
"Top 10" tips for OS/2 Clients
* Make sure you have PLENTY of memory if you
want to install and use all of these client
products!
► Follow recommended installation order
► Use ODI2NDI and NDIS MAC driver
► LIB PATH statement correct for NetBIOS
coexistence
’Top 10" tips for OS/2 Clients
Recommended Installation Order
Manually unpack ROUTE.SYS in Token-Ring
environment
Avoid unnecessary changes to CONFIG.SYS
- Let Instail/Config programs make the changes
OS/2 2.x
NetWare Client for OS/2
LAN Adapter and Protocol Support
- Create master LAPS disk with latest LAPS
version and al! needed protocols
IBM Network Products
- LS Req., TCP/IP, NetView, etc...
Banyan VINES Requester
AS/400 PC Support for OS/2
Lotus Notes
OS/2 for Windows
► Remove ALL networking support before
installing OS/2
► Follow recommended installation order
Run DOS networking programs in VMBs for
better compatibility
► If Dual Boot used, make sure DOS client code
not in OS/2 path
NetBIOS Application Support
► 2 NetBIOS APIs
- NetBIOS 2.0 ("Submit" interface)
- NetBIOS 3.0 (NB30)
► NetBIOS does not specify a transport
- must decide which transport(s) to use
* may be bound to more than one
NetBIOS Application Support
NetBIOS Application Support
NetBIOS 2.0 APS
- Documented In IBM LS 2.0 API Reference
- Shipped with LS 2.0, LS 3.0, MS LAN MAN, and
Novell NetWare (emulator)
- Implemented by NETAPI.DLL
- Application layer only (no kernel interface avail)
- Typically uses NetBEUI
► Novell NetBIOS uses IPX
IBM NetBIOS 3.0 Specification
- Also known as 'NB30'
- Typically uses NetBEUI/JetBEUl as transport
- Documented In the IBM LAN Technical Reference
- Shipped with ES 1.0, LS 2.0, LS 3.0, and NTS/2
- Implemented by NETBIOS.OS2MCSNETB.DLL
(Kernel Interface and Application layer Interface)
- Faster and easier to code than NetBIOS 2.0
- Used primarily by IBM NetBIOS applications and
Lotus Notes
Choosing NetBIOS
Which NetBIOS/transport to choose?
- NetBIOS 2.0 over IPX
► NetWare-only environment
► No need for Virtual DOS support
► Use NetWare OS/2 Client NetBIOS
_ NetBIOS 3.0 over NetBEUI/JetBEUl
► NetBEUI-based environment
► N© routers installed, or IBM 8611 MPR
Choosing NetBIOS
► Which NetBIOS/transport to choose?
- NetBIOS 3.0 over IPX
► NetWare environment
► IBM NetBIOS applications
► Need Virtual NetBIOS support
► Routers installed
_ NetBIOS 3.0 over both IPX and NetBEUI
► mixed IBM/Novell environment
► Typically only used on a server
NetBIOS 3,0 over IPX
TCP/IP NetBIOS
Novell NetBIOS
Work ©n Future Interoperability?
► Novell
- LOGIN/LOGON
- Systems Management
- Integration of NetWare tools into WPS
- Virtual NetBIOS Support
► IBM Products
- LAN Server over TCP/IP performance
- LAPS Packaging
- Peer-to-Peer
NTS/2 LAPS Configuration Guido
(S96F-8489-00)
IBM LS 3.0 NetWare Coexistence (S96F-8311-00)
IBM LS 3.0 API Reference (S96F-8440-00)
NetWare Requester for OS/2 2.0 Users Guide
(GG24-3891 -00)
Vines Users Guide for OS/2 2.0
Electronic Support Forums
► CompuServe Information Service
- OS2SUPPORT
► ES/LS Support
► Application support
- OS2DF2
► For developers only
► LS,TCP/IP,C/i/D, NTS/2 API support
- NOVOS2
► NetWare Client
► NetWare for OS/2
Product level Publications
► TCP/IP for OS/2: LAPS Introduction and Config
Guide (SCSI-7026-00)
► TCP/IP for OS/2: Installation and maintenance
(SC31-6075-03)
► IBM LAN Technical Reference (SC30-3383-03)
► IBM ES for OS/2 LAPS Config Guide
(S046-1113-00)
► AS/400 PC Support OS/2 Install and Admin
Guide (SC41-0007-01)
Electronic Support Forums
► IBM Bulletin Board
- IBM Personal Systems
(919) 577-0001
- IBM National Service Center
(404) 835-6600
► IBM FTP Server
- software.watson.ibm.com
Other Sources of Information
Other Sources of Information
► ITSC 'Redbooks'
- (GG243891) OS/2 NetWare Requester
- (GG243893) NetWare on TCP/SP
► IBM NDIS Driver Implementation Package
Contact: dwb Associates, Inc.
9360 SW Gemini Drive
Beaverton, OR @7005-7109
U.S.A
(503) 626-3081
(503) 641-6012 - FAX
► IBM OS/2 Developers Magazine
- LAN Interoperability with OS/2 2.0 (Winter 1993)
IBM OS/2 Developer
PO Box 1079
Skokie, IL 60076-9722
- Personal Systems Magazine
- IBM and Novell LAN Software Coexistence (Apr 92)
IBM Personal Systems Technical Solutions
c/o The TDA Group
Box 1360
Los Altos, CA 94023-1360
Other Sources of Information
► OS/2 Developer's Connection
- Quarterly GD-ROM(s) full of tools and documentation
- Private CompuServe forum
- To order the Developer Connection for OS/2 or additional licenses, please
call the appropriate number:
United States: 1-800-6DEVCON (1-800-633-8266)
Canada: 1-800-561-5293
Brazil: 0800-111205
Mexico: 91-800-00639 (within the country)
627-2444 (within Mexico City)
> The following require your country's international access code prior to
the listed number:
Asia/Pacific: 61-2-354-7684 (You will be calling IBM Australia; 61 is
the country code.)
Europe, Middle East, Africa, and Latin America (You will be calling IBM
Denmark; 45 is the country code.) Operators speaking the following
languages are available:
Dutch 45-48101400 German 45-48101300
English 45-48101500 Italian 45-48101600
French 45-48101200 Spanish 45-48101100
Acronyms
► CCB - Command Control Block
► DLR - DOS LAN Requester
► IEEE 802.2 - Logical Link Control defined by IEEE
► IFS - Installable File System
»- IP - Internet Protocol
► IPX - Internet Packet Exchange
► ITSC - International Technical Support Center
► JetBeui - NetBIOS Protocol stack (newer - faster)
► NetBeui - NetBIOS Protocol stach (old version)
► LANDD - IEEE 802.2 Protocol Stack
► LAPS - LAN Adapter and Protocol Support
► LSL - Link Support Layer
► MAC - Media Access Control
Acronyms
e» MLI - Multiple Link interface
► MLID - Multiple Link interface Driver
► MPI - Multiple Protocol interface
► NDSS-Network Driver Interface Specification
► NFS - Network File System
► ODI - Open Data-Link Interface
*■ POPS - Performance Optimized Protocol Stack (Same as
LANDD and IEEE 802.2)
► RDR - LAN Server file Redirecter
► RPC - Remote Procedure Call
» RPL - Remote Program Load
► TCP - Transmission Control Protocol
► UDP - User Datagram Protocol
LS14
Agenda
Multiprotocol Transport Services
Don Woods, BBM Austin, TX
Worldwide Changes Driving Networking
Intra-enterprise DIVERSITY
« Today's Environment and Requirements
@ Multiprotocol Transport Networking Overview
s MPTN Benefits
• MPTS - AnyNet for OS/2
. ■: . — IBM LAN Systems mp*p2
Today 's Environment: Multiple Protocols
Problems:
• Application bound to
Protocols
• Multiple active protocols
9 Extra memory and
processor costs
® Complex code
management tasks
IBM LAN Systems
mm LAN Systems
wpbp4
Customer Requirements
• Choose applications
independent of transport
network
• Simplify the network
• Extend the reach of
applications across
multiple networks
Protect investment of
existing applications and
hardware
IBM LAN Systems
mptipS
Common Transport Semantics (CIS)
CTS Examples
Mixed Protocol Examples
IBM LAN Systems mpup)
BIBB
SNA
OSS
TCP/IP
NetBIOS
IPX
DECnet
SNA
m
Sf.ssfc
i ^SSeSftT
OSI
m \
TCP/8P
'v 3
S
NetBIOS
|m
IPX
n
DECNet
pi
WWW
lip products same protocol
IBM LAN Systems
Multiprotocol Transport Networking
© Applications and APIs
independent of transport
© Transport user partners
must match
® Connection and
connectionless mode
transport services
® One or more transports
below Common Transport
Semantics
@ Ability to add protocols
above or below
Building Multiprotocol Networks
« Address Mapping
e Function Compensation
« Transport Gateways
® Network Management
IBM LAN Systems
mptspn
mm LAN Systems
Address Mapping
MPTN Access Node MPTN Access Node
jMBli
§S
■ ■
iff
■
Wfm m
j ]
■■ Bh
• Three architected approaches:
- algorithmic
- extended native directory
- address mapper
- i .. ; mu LAN Systems n**p>3
Common Transport Semantics
CIS includes:
® Native flows for matched user and provider protocols
® iMIPTN function compensation and address mappings
for unmatched user and provider protocols
9 Function delivered by industry standards such as
RFC 1001/1002 for NetBIOS over TCP
" = ■■■ == IBM LAN Systems rrpupu
Transport Functional Compensations MPTN Transport Gateway
Transport User Services
User
Expedited
Iff Multicast Data RecordsStream...
3)
2 osi
>
o
& TCP
o
g-NetBSOS
ffl
c
m
H SNA
j§§
■
■
i
M
§(§
1
■
;f- s
■
SI
1
■
mi
M function Sacking,
^ needs compensation
@ Every transport provider
lacks functions supported by
other transport providers
® Compensations are common
solution for multiple
protocols’ missing function
© Compensations are minimal
© Compensations required only
when transport user requests
services not provided by
transport provider
ypiN
Access rsode
• Provides MPTN services for native protocol
« Interconnects two networks with different
transport protocols
ISM LAN Systems
mm LAN Systems
Multiple MPTN Gateways
OS/2 Product Implementations
» TCP/SP Sockets over
- SNA
- NetBIOS
e APPC ovsr TCP/SP
• NetBIOS over TCP/SP
- (RFC1001,1002)
ISM LAN Systems mptspie
MPTN Benefits
im LAN Systems
• LEVEL I (Protocol Independent Set - so32dILd!l)
- CONNECTION SETUP
* listen, accept, connect
~ DATA TRANSFER
* sendto, recvfrom
* send, recv, sendmsg, reevmsg, readv, writev
- GENERAL SERVICES
* ioctl, select, getsockname, getpeername, get/setsockopt
a LEVEL IS (TCP/SP Protocol Dependent Set - tcp32dll.dll)
* set/gethostbyname, inet_addr, htons,....
- ====^=== -- mM
LAN Systems wpt v n
Communicating with NetBIOS NCB Appis.
Sockets "C" Programming Example
InstaBSatgons/Configurations
• MPTS Installation/Status
- CID Enablement
- mpts, mpfstart
- mptstat, trace on/off
# NetBIOS Protocol Configurations
- (same as NTS/2 1.0)
© TCP/IP Protocol Configurations
- ifconfig, route, arp, ping, netstaf
® TCP/IP over NetBIOS Configurations
- Name services (mptpaddr, mptuaddr, mptpSst)
IBM LAN Systems n^ze
OS/2 MPTS - AnyNet Product Strategy
OS/2 MPTS -AnyNet Product Strategy—
• Integrated Transport Services to Network Enable OS/2
- Protocol Stacks / MAC Drivers Enablement
- MPTN/CTS Enablement
• OEM Product Packaging for Early Availability
© Single 32 bit Transport APS
- Industry Standard
- Protocol Independence
« Coexistence with Current 16 Bit OS/2 Transport API’s
- NetBIOS NCB, 16 bit Sockets, APPC/CPI-C,....
B SB ran LAN Systems <***>21
• Multi-Protocols Support
- Single Protocol for Client WS
- Multi-Protocols for Server WS
- NetBIOS for Small/Medium LAN Installations
- TCP/IP, SNA for Medium/Large LAN/WAN
Installations
- NetBIOS, TCP/IP and SNA Network Interoperability
DM LAN Systems mptip21*
Function MPTS Structure
* Includes ALL NTS/2 1.0 LAPS Services
# 32 bit Sockets Library
- Enhanced Protocol independent Services
* Connection-Oriented Data Transfer
* Connection-Less Data Transfer
- TCP/IP Protocol Dependent Services
ft Protocol Support
- Local IPC
- TCP/IP
- NetBIOS
- TCP/IP over NetBIOS (NonNative)
# Installation/ Configuration Services
ISM LAN Systems
mm LAN Systems
MPTS - AnyNet for OS/2 Benefits
MPTS - Any Net for OS/2 Future Direction
« TCP/IP Applications RUN on NetBIOS LAN
Unchanged
o NetBIOS LAN Performance
® Single Transport Protocol for Clients
© Multiple Concurrent Transport Protocols for
Servers
IBM LAN Systems 0^27
• Other Protocols Support
® MPTN Gateways
• OS/2 AnyNet / MPTF Coexistence
© IBM Microkernel / Workplace Products Support
= l . ^- IBM LAN Systems mpisp»
Publications
Trademarks
® MPTS Product Publications
- IBM MPTS - AnyNet for OS/2 Programmer’s Reference
- IBM MPTS - AnyNet for OS/2 Configuration Guide
- IBM MPTS - AnyNet for OS/2 Message and Problem
Determination Guide
• Architecture and OS/2 Related Product Publications
- GC32=7057 Networking Blueprint: Executive Overview
- GC31-7Q72 MPTN Pocket Guide
- GC32-7073 MPTN Technical Overview
- SC31 =6487=0: Sockets over SNA User’s Guide
- SC31 =6488=0: APPC over TCP/IP User’s Guide
The following are trademarks or registered trademarks of the IBM Corporation:
IBM, AIX, CICS/ESA, CICS OS/2, DB2, DISTRIBUTED DATABASE CONNECTION
SERVICES/2, DRDA, IMS/ESA, MVS/ESA, NetBIOS, NetVIew, OS/2, OS/400,
PROFS, and VTAM.
The following are trademarks or registered trademarks of their respective companies:
Appletalk Apple Computer Company
DECnet Digital Equipment Corporation
NFS, Sun Sun Microsystems, Inc.
UNIX, IPX Novell
X Window System Massachusetts Institute of Technology
Other products mentioned herein might also be trademarked by their respective companies.
The announcement and availability of referenced functions Is within IBM’s business and
technical Judgement.
IBM LAN Systems
mm LAN Systems
LS15
ADSTAR
DISTRIBUTED STORAGE
MANAGER
Leader in Storage Management
BACKUP & ARCHIVE PROCESS
v Allow different type* of data
to be treated differently
TRADEMARKS
Owner Trademark
IBM ADSTAR, AIX, A1X/6000, DB2/2, DB2/6000,
OS/400, OS72,
MVS/ESA VM/ESA
Novell
X/Open Co, LTD
Cray
Apple
Microsoft
Sun
FTP Software
Attachmate
Hewlett-Packard
Borland
The ASK Group, INC.
Digital Ecfuipment Corp.
Santa Cruz Operations
Novell, NetWare
UNIX
Uni cos
Apple Sssantosi*., mac;Ct-
ftSicrosoft, Windows, FOXPRO
SunOS, Solaris, Open Windows
PC/TCP
Attachmate, Extra!
Hewlett-Packard
PARADOX, dBase
INGRES
DEC ULTR1X
SCO, Open Desktop
BACKUP & ARCHIVE PROCESS
(2) Within this policy domain exist ’'rules"
for backing up & archiving data
s/ Cu*tomlze ''rule*"' to meet your data projection need*
v 7 Standard MC —> 'Up and running"
BACKUP & ARCHIVE PROCESS
/ How oftc-n?
/ Start time window?
/ Randomization
y Priority?
BACKUP & ARCHIVE PROCESS
(5B) ADSL’s
tracks a variety of information,
such as ciient's data
Mirrored Copies
y 2 phase commit
y Mirroring: automatic aitornatc-voiu me-switching
v Dynamically expand & contract
y Database- dump, load, audit
® Clients' data goes through
a filtering process
Clients' data Is backed up or archived
as specified by the "rules"
Backed up or archived data
can be compressed
($) Backup and archive data is protected and stored in
existing on ADSfW’s server
v Migration
y Wide range- of storage- mc-dia
y 'Unlimited' 1 storage- pooi ic-vc-i*
*/ Dynamic storage- reconfiguration
BACKUP & ARCHIVE PROCESS
(6) Backup and archive data is protected and stored in
existing on ADSM's server
Migration
\/ Wido r-ingo of siorago modi a
•/ ‘'Uniimitod'' oforago pool iovolo
V Dynamic storage* reconfiguration
ize tape rnour.to or. restore
LAN ADMINISTRATOR CONTROL?
Engineering
'Revenue loss 1 2 due to network and system outages
averaged $3.8 million luk year per company."
Computorworid
2/7/94
1 According to a sunrey of ICS managers responsible foe LAN &Jctr
computer systems by bifonetics, Inc.
(SJ, California research firm)
2 This comperes with $650,000 per company in a 1989 study
ADSTAJR DISTRIBUTED STORAGE MANAGER
CLIENT/SERVER APPLICATION
Simple Put Powerful Inter face for the
End User
t/lDM A1X/60OO
V'IDM OS/2
/(DM OS/400
'/ (DM MVS
•/ EDM VM
'/Apple Macintosh
V'DOS
'/ [DM AfX/6000
*/ Microsoft Windows
yscouNixses
V Novell NetWare
*/SCO Open Desktop
S'* Sun Microsystems SunOS;Sofaris
y Availability Management
*/ Storage Management
/ [DM AiX/6000
/(DM OS/2
/[DM M VS
‘/[DM VM
’/ Borland dDASD for E*OS
S'* Dor land PAFiADOX for DOS
/ Borland PARADOX for Windows
/ [DM D52/2
*/ 1DM DD2/6000
'/ Apple Madnt osh */D DC ULTm(X
/DOS V HP HP-UX
/[DM AIX/6000 S^iDM -OS/2
V Microsoft Windows /Novell NetWare
V SCO UNIX 366 /SCO Open Desktop
/Sun Microsystems SunOS/Safaris
y Informix online for AiX/6000
/(NODES Intelligent Eetabase for A1XS500
y' Oracle for [DM PS/6000"
/Microsoft ACCDSS for Windows
/Microsoft FOXPDO and for Windows
V Sybase"
V'Availability Management
'/storage Management
V [DM DD2/8000
partttk
/ Sysio-m as&isted
•/Crow pi«tfc»rm
v Bo-stl nation sc-taciion
/Sovuriiy: rc-gteir-sttcn airthoriiailon
“ Within one year following the San Francisco
earthquake ofI989 y 93% of the businesses that
lost the use of their data for 10 days or more,
filed for bankruptcy . Half of those filed
immediately ."
Source: MicroWorid - April 1891
ADSTAR DISTRIBUTED STORAGE MANAGER
IBM
MVS or V6S
ADSM
SERVER
Storage .Devices fva;s>or*c** 'ey *He JVIVS or VJW ADSM Server
fciii
• PWSCS la aupportedony on a VM aerver
@ a^hrlBMQ 5 p.10>4(Wr^««r^d)
ADSTAR DISTRIBUTED STORAGE MANAGER/6000
_(ADSM/6000)
ADSTAR DISTRIBUTED STORAGE MANAGER
API __
as an ADSM client node
/ ADSM API available on:
HP HP-UX
IBM AiX/6000
IBM OS/2
Microsoft Windows
Sun Microsystems SunOS/Soiaris
BACKUP & ARCHIVE PROCESS
jgg|5apg|g| Z Dorfand dD AS D for DOS
Z Dorfand PARADOX for DOS
V Dorfand PARADOX for Windows
Vi DM DD2/2
A DM DD2/6000
V^IKGmSS frjteffigent Database for AfX/8500
‘/Oracfe for [DM **3/8000"
V Microsoft ACCDSS for Windows
V Microsoft FOXPRO for Windows
APSTAR DISTRIBUTED STORAGE MANAGER
adstar distributed storage manager
adstar distributed storage manager
ABSTAR DISTRIBUTED STORAGE MANAGER/400
(APSM/400)_
LSI
' media management with
tern LAN Network manager:
tor OS/2
. Nathan C„ Bullock . ||||
: Advisory- P’rogfadtmof.'|||
IBM Corporation
Research Triangle Park, NC
HI COURSE; LS16 •
V '. FEATpRES & FUNCTIONS ' ■:.
^ coMpi^oi^;'
~ eEACONIRG&SGFT ERRORS
' -lah performance' -'il®iill
- CRITICAL RESOURCES iRBIill
► MANAGE SQTHMEDIA AND DEVICES ' -'
.> AdTOMAIIcNEi^h^T^lliileY .
DISCOVERY - , ■- :V;
: : UJ^; : ^ 0 : ;^ 4 |CS#P';y^i«,'#k|lieRIERS ; f ■ v l" :
► FULL FUNCTION COMPAND LIRE t/F
.►;-D¥NAMlC EVENT tOG-STORiS;ANiil 5 i#E®
■i- ;-ALL RELEVANT.
'•* imMm and automatic adapter iiiiiii!
; removal
MEDIA MANAGEMENT vA
■ . Bt>t PANABEMENf
► MANAGES TREtAN'TOTHE ADAPT
k AUTOMATIC -DISCOVER OF ACTUAL 7 Jill'
TOPOLOGY'.' :. \ . • lipf::.: tl
I ROT RESTRICTED TO HUB .ATTACHMENT IN . : '
ORDER TO REMOVE AN ADAPTER
* NOT RESTRICTED TO HUB ATTACHMENT IN
ORDER TO DETECT FAILING ADAPTER
'* NETWORK MANAGEMENT JSVERT" FASt AND
EFFICIENT (ITS BUILT-IN TO THE ADAPTER
■ DRIVERS) ISIIIM;
* INTERUPT DRIVER VS POLL-BASED
It EXPLOITS INFORMATION ALREADY STORED
1 ;aT:BRIDGE'AND : RC lJTfeR.;FOR TOPOLOGY ,
LAN NETWORK MANAGER FOR OS /2
: STANDARD PRODUCT SUPPORT
p- REQUIRES:
-OS /2 2 . 1 +
■ - LAN ADAPTER & PROTOCOL'.SUPPORT,. ;,I
' .{UPS) .
*t SUPPORTS: ;.
■ :; ;Los /2
-TCP/IP FOR OS/2
~ INSTALL/2
i VGA, XGA, 8514 A, IMAGE/A- v\ •
II THE IBM THINKPAD) .IIiilfia;S^^;
► DOES NOT iEiUtREA'DEDiCiibrED^STEM;.
FOR OS/2:
r?i ; E::liiiF!^EN06R,S0PPdRT III
y lnm now ”0? fics all? m su pro rts non-ibm
illT^ORKjNO DEVICES «ll®lllllliyB
* IBM ENDORSED LNM COMPATABILITY
CERTIFICATION PROGRAM
llN'TERO PER ABILITY TESTING' AND •
m tolly/
I GROUP (INDEPENDENT TEST LAB)
'►.CERTIFIED PRODUCTS ARE AUTHORIZED TO
BEAR THE "LNM COMPATABIE” LOCO
► LNM CUSTOMER SERVICE SUPPORT FOR
CERTIFIED PRODUCTS IS PERFORMED BY
THE TOLLY GROUP
LAN NETWORK MANAGER FOR OS/2
■ DISTRIBUTED MANAGEMENT lllli
A PR<|&¥ AOiilT FOR LAN MANAGEMENT TO
NETVIEW -//i BtB;®
l|L :: :GiN : iRATiSaii : DSMiHTS TO NETVIEW Y
' w SET :ALERT : FILTlRS'''.'• •
: - FULL SUITE OF CQM8/^NDS FiDMETVIEW
MUP^RitW ■' I
rngmi)'./
►,PROXY AGENT FOR LAN MANAGEMENT TO 111
NETVIEW/6000 .
BGiNERATES/SENOSTRAPS TO :llillll!ll
' • NETVIEW/6000 •lllilll
-FULL SUITE OFCOMMANDS FROM . 1
NETVIEW/6000
LAN NETWORK manager 1 'FORosi.:
11 :I^||ribut!ed.M^a^^snT; ; /'
LAN NETWORK MANAGER FOR OS/2
/'^GRAPHICALUiERTNTERFAii/li
//►/FULL GRAPHICAL TOPOLOGY -
► AUTOMATICALLY DISPLAYS CURRENT
NETWORK STATUS
► SWITCHABLE EUI
.;^INTUITIVE PANEL NAVIGATION .
;;ANAVlGATE ACi§iii;V|EV^ L ll
► FLEXIBILITY WITH SETABLE EUI OPTIONS
- FONTS 11/1 f y[ ; : 1 j : ^2222 2 ' 2 'Bill
I. - sorts : iii«!i!a
-SHOW
!► DYNAMICALLY DISPLAYS .RING, UTILlEAffoil^
lM;NETWGRK MANAGER' FOR OS/ 2-1
TOPOLOGY' lllll
liliiifiEl®
v> network ■: iliiiill
- SEGMENT. ' • ■ 'JlHIllillllllli
I ~DEVICE -vV'
* DISPLAY BOTH LAMS AND WANSAt
NETWORK LEVEL VIEW
► AUTOMATIC OR:'USEB':DSP$|iB TOPOLOGY
LAYOUTS ;":.•?•-••••
* USER DEIFINED GRAPHICAL BACKDROPS . :
* DEVICE STATUS AUTOMATICALLY. SHOWN |
WITH COLOR CHANGES
► STATUS IS AGREGATED UPWARD THROUGH:
VIEW 'LEVELS '
LAN NETWORK MANAGER FOR OS /2
HUE MANAGEMENT V
2 FULL DEVICE-LEVEL. VIEWS
.fe:AUTOMATl€ALLY::OiSPLAY. PORT STATUS
^MANUALLY OR AUTOMATICALLY ENABLE St
l -jd®sa!ya^£'Nai?nra^ : '
& INITIATE HUB MICROCODE LOAD
liifeiiiiT® #: ■
ItIiMnDALL^ TO' ■
LAN NETWORK MANAGER 'EOROS /2
BRIDGE/ROUTER M ANAGEMENTV'
*;managstw&pqrt multiport; BRIDGES- /
► AUTOMATICALLY LINK BRIDGES.;
II GET & SET BRIDGE PARAMETERS
BRETRIEVE'PEREORliiANClCOUNTgRiiiiM^:
BRIDGES
^•JNSTiWjL -V
^LEXiBLITY IN DEFINING A MANAGED DOMAIN;
I • - MULTSiM : LNM^S^N L iANAii;|RE:iAMi' ; ;
BRIDGE
~ ABLE TO SET UNIQUE PASSWORD/BRIDGE
II ONLY MINIMUM DEFSNIIlON-RlOUIRlD TQ>R:•
ESTABLISH MANAGEMENT LINKS'
LAN NETWORK MANAGiRfOROS/ 2 :
•• ACCESSCONTRQL T
► AUTOMATICALLY CONTROLS ACCESS TO THE
lan ■■■ >;•
2 GENERATES ALERT FOR ILLEGAL ACCESS'/••'
attempt
'I'OPERATORDEBNESI^iilii-fiR'COiTROL;:?::
I UNAUTHORIZED Wpilf!i|!l||:£;;
• - UNDEFINED
■ - ADAPTER-MOViD t FROmIPrIIR: LOCAilOil-il
LAN NETWORK MANAGER FOR OS/2
Mlt : PROpy.GTiNSTALLATiON III
IN»LL10L:USINO IBM'S T
'Tnstall/2 FOR os/2" product
^; i|LEOTI¥iL¥ INSTALL COMPONENTS .
► SELECTIVELY DEINSTALL COMPONENTS
► FULLY C/I/D ENABLED FOR REMOTE INSTALL:
LAN NETWORK MANAOER FOR OS/2
■ .PRODUCT OOCUMiiTATlON-: -T
1 FULL SET OF HAiDCOPY MANyALS T C : ^
► ONLINE MANUALS FOR OsM^VlEW 0 ;
► ONLINE MANUALS FOR "BookManager” FOR
' - •!§>
► ONLINE MANUALS FOR "UbraryReader/2 M
LAN NETWORK MANAGER FOR OS/2:
PRODUCT PACKAGING/OFFERINGS
► ALL NEW TIER PAQKAQINQ/PRICINQ
All tiers have the same funtlonality, but
different management domain capacities.
~ TIER 1 k MANAGE 1-2 SEGMENTS • I
j/^T|ER:r«:MMMifl4ifeMENfS : /•,
TIER 3 ~ MANAGE 1-2S6 SEGMENTS
MM01
Multimedia Presentation Manager/2
08/04/94
OS/2 2.1 Multimedia Support
Maria R. Ingold
ingoldm@vnet.ibm.com
Multimedia Development
IBM Boca Raton
What is Multimedia?
► The Creative Use of: ► Interaction
> Graphics
> Imaging
Audio
> Video
> Animation
> 'Non-Traditional 1 Devices
Why OS/2 for Multimedia?
► Performance
- Preemptive multitasking
- Multi-threaded
- 32 bit addressing
► Memory and process protection
► Workplace Shell User Interface
- Object manipulation
Multimedia Presentation Manager/2 Overview
Multimedia Presentation Manager/2
System Sounds _ System Sounds
13 System Events
a Alarm Clock
« CUCKOO.WAV
26 .WAV files
* Begin Brag
- POP.WAV
Add new .WAV files easily
« Closing Window
- EEEOOOP.WAV
Easy Association
» End Brag
■ DOINK.WAV
System Sounds Volume Control
® Error
■ BELLS.WAV
■ Information
- DRUMROLL.WAV
« Lockup
» DOORCLS.WAV
* Opening Window
• WOOEEP.WAV
» Printer Error
» BELLS.WAV
® Shred
- SHRED.WAV
■ System Shutdown
• APPLAUSE.WAV
■ System Startup
• CHARGE.WAV
■ Warning
- TWIP.WAV
Media Control interface
► 32-bit device independent programming layer
- 32 bit procedural interface
- 16 bit support THUNK
- string interface
** Extremely low cost t© enable applications
Media Control interface
► Multimedia logical devices
- existing devices can be extended
- new devices can be added
Waveform Audio
CD Audio
MIDI Sequencer
Amplifier Mixer
CD-ROM/XA
Videodisc
Digital Video
08/04/94
2
Multimedia Presentation Manager/2
Media Control Interface
MCI Basic Functions
► mciMakeGroup
► mciSendCommand
► mciSendString
► mciSetSysVaiue
a DUiiOS a group ui mt?uiei utsviu«&
■ Sends a command to a device
■ Sets system wide values (e.g.
Closed Caption flag)
MCI Basic Messages
Media Control Interface
__
► MCLOPEN
► MCLCLOSE
► MCLACQUIREDEVrCE
► MCLLOAD \
► MCLPLAY \ ■ Opens a device
► MCLSEEK \ ■ closes a device
\ ■ Request exclusive use
■ Specifies a file or RIFF chunk
for a device
« Causes device to begin playing
« Changes current media position
08/04/94
Multimedia Presentation Manager/2
Data Streaming and
Synchronization
■ Synchronization and Streaming
Manager (SSM)
- central management of resources
- buffers / synchronization data
- reliable data transport
- extendable
■ Synchronization
- cue-points, position advises
- inter-device synchronization
OS/2’s Software Motion Vide©
Ulti motion™
and Indeo™
Formats
Uitimotion and OS/2 Digital Video
► Uitimotion
- SMV Data stream
definition
- CODEC (compressor/
decompressor)
► OS/2 2.1 Digital Video
- Player software
- Pluggable CODECs
> Uitimotion ™
► indeo ™
» Others
Uitimotion Video Playback
Software motion video playback algorithm
*> 25 MHz 386 or above
- Audio card (optional)
Nominal Video Clip
- 320 x 240 x 15 FPS @ 64K colors
08/04/94
4
Multimedia Presentation Manager/2
_ Sound Card Support
► Sound Blaster
► Sound Blaster Pro
► Sound Blaster 16 ASP
- Creative Labs
► Pro Audio Spectrum - Media Vision
► PORT.ABLE Sound Plus - DSP Solutions
► M-ACPA - IBM
► Plug-N-Play - Arkay Technologies
For More Information - Books
For More Information - Articles
► Books
- S71G-2220:
- S71G-2221:
- S71G-2222:
- S71G-2223:
- S41G-2921:
- 82F4224:
The OS/2 Multimedia Advantage
Application Programming Guide
Programming Reference
Subsystem Development Guide
Sample Programs Workbook
Ultimedia Video IN User's Guide
► Red Books (with sample diskettes)
- GG24-4042: MMPM/2 Advanced Programming
Techniques
- GG24-3963: MMPM/2 Programming Using
Digital Audio Examples
► Digital video architecture for OS/2 2.1
- High-Speed Networking and Multimedia
Computing ISBN: 0-8194-1483-2
► inside OS/2 Software Motion Video
- Dr. Dobb's Multimedia Sourcebook, #209
► OS/2 2.1 Multimedia: From Sn-the-Box toVIde© In
- Personal Software Technical Newsletter, # 2
► OS/2 2.1 Multimedia
- OS/2 Monthly, Issue 10
08/04/94
5
What is OS/2 2.1 Multimedia?
OS/2 2.1 Multimedia
MMPM/2 Applications
and Architecture
Maria R. Ingold
ingoldm@vnet.ibm.com
Multimedia Development
IBM Boca Raton
► Multimedia Presentation Manager 12
► Set of audio and video applets
- Immediate functionality
- Exemplify use of MMPM/2 architecture
► MMPM/2 Application Programming Interface
_ EZaeilu AvtoneiKta
MMPM/2 Applets - Those two diskettes
Video IN
► Audio
- Digital Audio Player/Recorder/Editor
- CD Player
- MIDI Player
- Volume Control
- Sytem Sounds
- Lotus/Excel Macros
► Video Playback
- Uitimotion
- Indeo 2.1, 3.1
► Multimedia Data Converter
► Video IN Recorder
- Records Uitimotion, Indeo 2.1
- Bitmap capture
- Cut, copy, paste editing
► AVI File Utility
- Browse header, chunk, index, and status
- Interleave
- Split
- Merge
-Skew
- Animation
MMPM/2 Toolkit
► Header files, libraries
► On-line references
► Working sample applets
- Demonstrate every major MMPM/2 function
- Can be used freely
- Immediate productivity
The MMPM/2 Architecture
► Media Control Interface (MCI)
- Device independent
► Synch ronization/Stream i ng Manager (SSM)
- Real-time synchronization
► Multimedia I/O (MMIO)
- Data independent
► Multimedia Presentation Manager Controls
- Secondary Windows
- Graphical Buttons
- Circular Slider
What You Need to Know as a Developer
► What makes up the MMPM/2 architecture?
► How does a developer use MMPM/2 features?
► How does a developer extend MMPM/2?
► Why is MMPM/2 good for OS/2?
The Media Control Interface (MCI)
► Multimedia Device Resource Management
► Multimedia Device Grouping
► String and Procedural Interface
✓ Codecs v CD-DA w/built-in DAC
o Uttimotion v CD-DA streaming
o Indeo 2.1 3.1 v CD-ROM/XA
✓ Video Cards
• Jovian
. VCA
o WinMovie
• Video Blaster
o Super Video
« Video Magic
•r PCM & ADPCM support
✓ MIDI Playback w/mapping
✓ Implicit mixing/sharing
» M-Audio
« Soundbiaster/Pro/16
a MediaVision PAS-16
✓ Pioneer
8000
4200
4300D
4400
String Command Example
Play a Digital Audio File
open waveaudio alias w shareable wait
load w sound.wav wait
set w time format ms wait
setpositionadvise w on every 500 wait
play w notify
seek w to 0 wait
play w notify
close w wait
String Interface
Opening a device and loading a file
#defme OPEN_COMMAND 1
UCHAR szRetum[CCHMAXPATH];
HWND hwnd;
USHORT usUserParm = OPEN_COMMAND;
mciSendString ( (PSZ) "open MYAUDIO.WAV alias mydevice shareable notify",
(PSZ) szRetum,
(USHORT) CCHMAXPATH,
(HWND) hwnd,
(USHORT) usUserParm);
String Interface
Playing a File
#define PLAY_COMMAND 2
UCHAR szRetum[CCHMAXP ATH];
HWND hwnd;
USHORT usUserParm = PLAY_COMMAND;
mciSendString( (PSZ) "play mydevice from 10 to 20 notify",
(PSZ) szRetum,
(USHORT) CCHMAXPATH,
(HWND) hwnd,
(USHORT) usUserParm);
Command Interface
Playing a Fite
MCI_PLAY_PARMS mciPlayParms;
USHORT usWaveDID;
RC rc;
ULONG ulFrom, ulTo;
USHORT usUserParm;
mciPlayParms .hwndCallback = hwndMyDialog;
mciPlayParms. ulFrom = ulFrom;
mciPlayParms. ulTo = ulTo;
rc = mciSendCommand( usWaveDID,
MCIJPLAY,
MCIJSfOTIFY | MCIJFROM | MCI_TO,
(PVOED) (&mciPlayParms),
usUserParm);
Command interface
Opening a Device and Loading a File
MCI_OPEN_PARMS mciWaveOpen;
RC rc;
PSZ pszTempAudioFileName;
USHORT usWaveDID;
mciWaveOpen.pszDeviceType =
(PSZ) (MAKEULONG( MCI_DEVTYPE_WAVEFORM_AUDIO, 1));
mciWaveOpen.pszElementName = (PSZ) pszTempAudioFileName;
rc = mciSendCommand( 0,
MCI_OPEN,
MCI_WAIT | MCI_OPEN_TYPE_ID |
MCI_OPEN_ELEMENT,
(PVOID) (&mciWaveOpen),
0 );
usWaveDID = mciWaveOpen.usDevicelD;
Sync/Stream Manager (SSM)
► Centralized management of resources
► Centralized distribution of timing information
► Extendable architecture with stream handlers
► Data synchronization
- Cuepoints
- Position advises
- inter-device synchronization
► Efficient data movement
► Stream time tolerance checking
Sync/Stream Manager Architecture
v File system * Memory ✓ Multi-track
v MIDI mapper v CD-ROM/XA v Video
✓ CD-DA v Audio
Sync/Stream Manager
SpiSendMsg/SpiStartStream
RC rc;
HID hidTarget;
HSTREAM hstreara;
HWND hwndMyWindow;
rc = SpiSendMsg( hstream,
hidTarget,
SVSH_NEWHWND,
hwndMyWindow );
tc = SpiStartStream( hstream,
SPI_START_STREAM);
Sync/Stream Manager
SpiCreateStream
RC rc;
HID hidSource, hidTarget, hToss;
SPCBKEY spcbkeyMon;
DCB_AUDIOSH dcbVideo = {sizeof(DCB_AUDIOSH), M VIDSVJ1$ M , OL
IMPLJEVCB evcbMon;
ULONG EventMonProc (PEVCB pevcb);
HSTREAM hstream;
HE VENT heveniMon:
jetximuaiCi ^ v icAi oxijj , ounujouivc-, ot/ii
rc = SpiGetEIandler ("SVSH", &hToss, &hidTarget);
spcbkeyMon. ulDatatype = DAT AT YPE_DIG VIDEO;
spcbkeyMon.ulDataSubType = DIGVIDEO_MONITOR;
rc = SpiCreateStream( hidSource, hidTarget,
spcbkeyMon, &dcb Video, (PDCB) NULL,
(PIMPL_EVCB) &evcbMon, EventMonProc, 0,
Sr K ctro q m tk/f r*n V
Multimedia S/O (MMIO)
► Extendable with I/O Procs
► Data independece
- Storage systems
- File formats
- CODEC management
► Data identification
► Data conversion
► Internal RIFF support
MMIO Architecture
File System
Multimedia S/O
mmioGetHeader
rc;
hmmioMem;
IBytesRead;
(PVOID) &mmaudioliead€r,
sizeof( mmaudioheader),
&!BytesRead,
(ULONG) NULL,
(ULONG) NULL );
Multimedia I/O
mmioQpen
#define DATA_SIZE 1024
MMIOINFO mmioinfo;
HMMIO hmmioMem;
HAB habClipboard;
mmioinfo.fccIOProc = mmioFourcc( ¥, 'A', Y, 'E');
mmioinfo. fccChildlOProc = FOURCC_MEM;
mmioinfo. cchBuffer = DATA_SIZE;
mmioinfo. pchBuffer = (PCHAR) WinQueryClipbrdData( habClipboard,
CF_WAVE);
hmmioMem = mmioOpen( NULL,
(fonmioinfo,
MMIO_READ );
Multimedia I/O
mmiolRead
RC rc;
UCHAR *pBuffer;
ULONG ulBufLen = mmaudioheader.mmXWAVHeader.
rc = mmioRead( hmmioMem,
(PSZ) ^Buffer,
ulBufLen );
What You Should Now Know
For More Information - Books
► What makes up the MM PM/2 architecture?
- MCI, SSM, MMI0
► How does a developer use MMPM/2 features?
- MCI string and command APIs
- MMiO and SSM APIs
► How does a developer extend MMPM/2?
- Write MCDs, IDProcs, and stream handlers
► Why is MMPM/2 good for OS/2?
- Device independence
- Real-time synchronization
- File format independence
- Reduced development effort
► Books
-S71G-222Q
- S71G-2221
- S71G-2222
- S71G-2223
- S41G-2921
The OS/2 Multimedia Advantage
Application Programming Guide
Programming Reference
Subsystem Development Guide
Sample Programs Workbook
Red Books (with sample diskettes)
- GG24-4042: MMPM/2 Advanced Programming
Techniques
- GG24-3963: MMPM/2 Programming Using
Digital Audio Examples
For More Information - Articles
The Design Of OS/2, 2nd Edition
► Digital video architecture for OS/2 2.1
- High-Speed Networking and Multimedia
Computing ISBN: 0-8194-1483-2
► OS/2 2.1 Multimedia: From In-the-Box toVideo Sn
- Personal Software Technical Newsletter, # 2
► OS/2 2.1 Multimedia
- OS/2 Monthly, Issue 10
► Available Fall 94
► Highlights
- Updated to cover OS/2 2.1, 2.2, OS/2 for
Windows, OS/2 for SSWP, Workplace OS
- New chapters on Multimedia, Multiprocessors,
and Microkernels
- Expanded coverage of latest microprocessor
technologies (Pentium, PowerPC, Alpha) and
system architectures
► Ordering info email lnternet:os2@aw.com
► 1st edition comments and suggestions email
Internet :76711.212@compuserve.com or
C©mpuserve:76711,212
MM03
Software Motion Vj^eo for OS/2
Uitimotion and
OS/2 2.1 Digital Video
Session Contents
► Uitimotion and Video IN
- Playback
- Capture
► MMPM/2 Video Architecture
► Demonstrations
Maria R. Ingold
Multimedia Development
IBM Boca Raton
ingoldm@vnet.ibm.com
Uitimotion and OS/2 Digital Video
> Uitimotion
- SM'V Data stream
definition
- CODEC (compressor/
decompressor)
► OS/2 2.1 Digital Video
- Player software
- Pluggable CODECs
> Uitimotion tm
- imdeom
> FLl/FLC
> Others
Uitimotion Video Playback
UStimotion Video Playback
Ultimotion Video Playback Scalability
► Software motion video playback algorithm
“16 MHz 386 or above
- Audio card (optional)
► Nominal Video Clip
- 320 x 240 x 15 FPS @ 04K colors
MMIO Multi-track Read for Digital Video
■ Resolution Scalability
- Frame size can be scaled up or down by
factor of two
■ Frame Rate Scalability
- Frame rate is automatically scaled down
to match playback system
■ Color Scalability
- 16 bit true color images (64 K colors) are
scaled down to match playback system
Digital Video Playback
► Intra frame compression "1-Frame"
- Reference frame compressed without regard
to previous frames
- Variable 1-Frame rate selected at capture time
9 - Delta frame compression
- Only the differences between current and
previous frame are compressed
16 MHz 386 or above
- Audio card
- Simple "frame grabber" video input card
Variable frame size and frame rate selected at
capture time
Asymmetric Capture
- Frame accurate video source
- Laserdisc
Symmetric Capture
- "Live" video source
- Camera, VHS, Cable Tuner
Raw Data Capture
- Vide© captured in uncompressed format
- Frame accurate compression offline
Asymmetric Video Capture
► Frame accurate video source
- Laser videodisc with COM port interface
► Video compressed frame by frame - 1 to 5
seconds per frame
► Audio captured in real time
► Audio and video files interleaved
Raw Data Video Capture _
► Vide© is captured in real time from live video
source
► Uncompressed video is stored on disk
► Frame accurate compression can be done at
later time
Symmetric Video Capture
► Audio and video captured in real time from live
video source
► Frame rate determines amount of time available
for compression
Uitimotion Data Rates
► CD-ROM Playback
- 320 x 240 x 15 FPS @ 64K colors = 9
MB/minute (150 KB/second)
► Double Speed CD-ROM or Hardfile Playback
- 320 x 240 x 30 FPS @ 64K colors = 18
MB/minute (300 KB/second)
Digital Vide© Record
MMPM/2 Architecture
Video Capture Adapters
► Video Blaster - Creative Labs
► Video Capture Adapter - IBM
► SuperVIA - Jovian
► QuickVIA - Jovian
► Super Video Windows - New Media Graphics
► Video Magic - Samsung
► WinMovie - Sigma Designs
Demonstrations
For yore Information - Books
► UStimedfa Video IN User's Guide
- 82F4224
For More Information - Articles
► Digital video architecture for OS/2 2.1
- High-Speed Networking and Multimedia
Computing ISBN: 0-8194-1483-2
► Inside OS/2 Software Motion Video
- Dr. Dobb's Multimedia Sourcebook, #209
► OS/2 2.1 Multimedia: From Sn-the-Box t© Video
In
- Personal Software Technical Newsletter, Issue
2
- OS/2 Monthly, Issue 10
Ultimedia Product Family
► WorkpSaee/2
► Perfect lmage/2
► Bulfder/2
► Manager/2
Peter C. Yanker
Advisory Programmer
IBM Almaden Research
Multimedia Creation and
Management
Ultimedia Product Family
► 32 Bit applications
► Multimedia tools for the Multimedia and
business professional
► Easy to Use
► Casual to Professional
► Workplace Shell Drag and Drop
► Interactive Tutorials
Ultimedia Product Family
* OS/2 Device Support
► Display Adapters
► Multimedia Adapters
► industry Standards Support
► TIF, AVS. BMP. PCX. WAV. TQA. JM. AVI
► CD-ROM Media
Application
► Samples
► All Product Tutorials except Manager
Ultimedia WorkpSace/2
Uitimedia Workplace/2
► Multimedia Data Management Tools
► Visual Multimedia Data Management
»- Image Thumbnails
► Media Browsers
► Workplace Shell Support
► SOM - System Object Model
► Extended Attributes
► Data Query Support
► SQL Queries Against Extended Attributes
► Database Support
► OS/2 DB2/2, dBase IV, Oracle V.6
Ultimedia Perfect lmage/2
Ultimedia Perfect f mag e/2
► Capture, Edit, Enhance
► Import/Export Multiple Formats
► Display Independent 24 bit Support
► Advanced Image Editing Tools
► Cut, Copy, Paste, Resize, Rotate, Crop, Zoom
* Color Enhancement Tools
► Masking, Filters, Blending, Balance,
► Mapping, Adjustment
► Text Plane Support
► Text/Trigger Field Editor
► AVC Image Format
► Print To OS/2 Printer
► Interactive Help
Ultimedia Builder/2
Ultimedia Builder/2
► From Simple Slide Show so Advanced
Interactive Applications
► Image, Audio, Video and Text
► Text Plane Support
* AVC image Format
► Animation
► Graphical Definition
► Effects
► 41 Dissolves and Transitions
► Graphical User Interface
► Film Strip Metaphor
► WPS Drag and Drop
* Generates AVA/2 Language
► Text User interface
► Full AVA/2 Access
Ultimedia Builder/2
AVA/2 Language
REXX Based Scripting
Full Function DP Language
Extendible to DLL's, Named Pipes
MCI Calls
Ultimedia Manager/2
► Image Recognition/Management Tool
► Based on Image Content
► Color, Texture, Shape and User Text
► Classification and Query
► Content Based
^ skis a mass'll sal
r- v:v::v:«iW n^wastv: twsss
► Database Storage, Queries
Demonstration Hardware
IBM PS/Value Point model 466DX2/D
SoundBlaster Audio card
20 Megabytes of memory
Business/Office
Presentations
Advertising
Kiosk
Multimedia Applications
Education Training
Computer aided instruction
interactive Training
Multimedia encyclopedias
Multimedia Applications
Consumer
Digital libraries
Electronic museums
interactive TV
Video on-demand
Home shopping
MM06
Pen for OS/2,
Pen and Speech Enabled
OS/2 for PowerPC,
and PenDOS
Moe Desrosiers
Mobile, Voice, and Pen Software
PSP Boca Raton
Pen Operating System Segmentation
Mouse vs Pen
Using "ink" As A Data Type
» Mouse
. Pointer Device
. X, Y, Buttons, Movement
* Data Point Consolidation
- Note Taking
- Annotation of Text or images
- Signatures
► Pen
. Pointer and Data Device
. X, Y, Buttons, Movement, +/-Z (Height, Pressure)
. Proximity Reporting
. 80-200 pts/sec, 200-1000 pts/inch
. No Point Consolidation
. integrated Sensor and Display Device
■ Freehand Drawing
- Teleconferencing
ANYTIME ANYWHERE WORKER
Same User Take Advanta 9 e Of Pen
Take Advantage Of Interface When Available
Pen DOS
PEN SOFTWARE STRATEGY
► Low End Devices Multiple Applications
* Single Application *. 32-Bit Devices
► Existing DOS Applications ► Existing DOS, Windows,
>- New DOS Applications OS/2 Application
>► New OS/2 Applications
PenDOS version 2.2
PenDOS provides a pen-enabled
operating environment which / ac ®
supports existing DOS L HRS
applications... /h/W device'',
/specific support
/ \ / Pen input enabled \
/TSR \ /operating environment \
/PENDOS\ ^ .
, ANY DOS 5.0 \ -and "pen-centric" DOS
OR HIGHER \ applications written to the
(MS, IBM, DR) \ PenDOS API.
HRS = CIO'S HAND WRITER RECOGNITION SYSTEM
PenDOS 2.2 Product Description
i GME j
(TRAINER 1 ]
/" U. S. N
^ HRS
PenDOS
Core
PenDOS COre: " = —
. Mouse Emulation .y If
. Writing Window (§IG-VeWs „J~.
- Soft Keyboard ^ f API
• Gestures —
/•'EUR "\
^V^HRS r y
/1DBCS'/
“ VHRS J
\ V
(APPLETS)
HR8 = aCS HAND WRITER RECOOMTIOW SYSTEM
PenDOS Product Deliveries
j PenDOS
| 2 .®
January 1993 June 1993 July 1993
15 devices 20 devices >20 devices
supported supported supported
CICs award QIC’s numeric CIC’s Handwriter
winning HRS 3 Reeo engine Recognition System
Adds opaque Additional opaque
tablet support tablet support
Ships with Applets
PenDOS
PenDOS
in PC-DOS
2.2
HRS = CICS HAhEWRITER RECOGNITION 8Y8TEM
PenDOS Developer's Toolkits
Pen for OS/2
DOS APR COMPATIBILITY
QUICK & EASY APP DEVELOPMENT
LOW RESOURCE CONSUMPTION
GROWING MARKET SHARE
"AWARD WINNING" HWX RECO
From CONVERTIBLES to the PDA,
PenDOS is the environment of
choice for DOS-based applications.
Pen for OS/2 Features
- Packaged As Extensions to OS/2 2.1
■ Set of DLLs, Device Drivers and Tools
- Runs All Existing Apps Unmodified (PM,
VIO, WInOS2, DOS)
- Mouse Emulation
- Gesture & Handwriting Recognition For
Existing Apps
Pen for OS/2 Features (cont.
< Compatibility Tools
- Pop-Up Keyboards
- Handwriting Input Pad
- Sketch Capture Pad
- Pen Tool Bar
- Gesture Assistance
- Application or User Supplied
Pen Extensions
Pen for OS/2 Features (cont.)
- Tools For Writing Pen-Aware 32-Bit PM
Apps
. WPS Objects For Device, System and
Gesture Customization
» Tools For Writing Pluggable Pen Drivers
- Telepen Network Conferencing Applet
Pen API Categories
. Wrt - Writing Subsystem
- New Pen Messages
- Device and System Control
- Stroke Delivery and Transformations
« Red - Recognition Event Delivery
- New Recognition Messages
- Gesture Event Delivery
- Gesture Mapping Support
- New Window Controls
- Stroke Collection and Recognition
- Device Driver Services
Wrt - Writing Subsystem APIs
■ Point and Stroke Data
- WrtQueryStrokeData
- WrtMapPointLong
- WrtQueryPointAuxData
- WrtQueryEventData
■ Device Configuration
- WrtQuerySystemCaps
- WrtQueryLocatorCaps
- WrtQueryButtonCaps
- WrtQueryDisplayCaps
- WrtControlDisplayBacklight
- WrtQuerylnputDeviceNames
* System Values
- WrtQuery/SetSysValue
- WrtRead/WriteSysValue
New Messages
WM_TOUCHDOWN
WM_LIFTOFF
WM_TAP / WMJDBLTAP
WM_STROKE
WM_SENSORMOVE
WM_EXST_PROXIMITY
WM_RECO
WM_RECO_COMMAND
Red - Reco Event Delivery APIs
- Interpreting Gesture Events (WM_RECO)
- RedQueryRecoHandle
- RedQueryRecoSubsystem
Message Flows
"No Movement"
Message Flows
Message Flows
Mew Window Controls
Sketch Control
■ Use For
Signatures
■ Use For
Annotation
. WC_SKETCH
- Query/Set Ink Width and Color
- Undo Stroke
- Clear Stroke
- Set Invisible Ink
- Set Drawing Pointer Shape
- Render Strokes to Clipboard as BMP
- Get Bitmap
— utiunoo
- Borderless Option
Strokes Inked and
Buffered For You
New Window Controls
. Link With PENPM.LSB import Lib
✓ Calls are Direct
✓ Won't Load w/o Pen
Extensions Installed
■/ Use For Pen-Specific
Applications
(or) Link With PENPMST.LIB Static Stub Lib
✓ Calls are Indirect
✓ Loads Even Without
Pen Extensions
✓ Use For Pen-Modified
Applications
✓ Only One Copy of
.EXE Needed
Programming Guidelines
■ Avoid Keyboard-Only Functions
- Provide Accelerators (To Enable Gestures)
■ Use Listboxes and Combo Boxes Often
- Add Drawing and Annotation Features
■ Supply Gesture Handlers w/o Modifying Your App
■ Portrait Display Considerations (480-wide)
■ Visual Pointers Not "Always" Needed For integrated
Sensor/Display Unit (You Should Check)
Hardware Support
Opaque Tablets How So get a Device Driver
► Wacom (SD-510C, SD-42X, Shipped with Pen for OS/2
SD-PL100V)
► Wacom (VD-1212, VD-1218, see Note
SD-PL200V)
>- Wacom ArtZ WACOM, 1-800-922-6613
► Kurta (XGT Format 3) Shipped with Pen for OS/2
► Kurta (VTS-5, Color) see Note.
► All CalComp opaque tablets, Shipped with Pen for OS/2
including CIC Handwriter Tablet
► Appoint (Gliffic Plus) see Note
Note: All of the above device drivers are available on Prodigy,
CompuServe and TalkLink. Or, call IBM, 1-800-627-8363.
i m 'inmkpmi 7WP, 3 bop, 730 T mpp$4 mm ThinkPad
IBM ThinkPad 71t»T SOaNdtS
AST (Grid SeOHCfe
.. Compaq concerto swHofe
- Das^sfwn STR-t see Hole
- Task se@ Hoie-
Hole: M of She above device drivers are available on Prodigy,
-Oofflfmsswvearsd TalkLinfe. Or, eat! IBM, 14KXHS27-8!M»3.
PenDOS and Pen for OS/2 SDK
► Join The Pen Developers Assistance Program
- Call 1-800-627-8363
•> The Developer Connection for OS/2
(Pen for OS/2 Product snd Toolkit only)
- Call 1-80Q-6-DEVCON
Downloading Device Drivers
► Available* vlaTalkUrsk* on OS2BSS, to lira Software
library, Is a section named OS2FIXSS.
For access, call 1-800-S47-12B3* Ask lor a
subscription to Tatktlnk to access 0S2SSS.
► Available, via Prodigy, In the OSMofe, In the Ikes
section of the IBS# iflss.
For access to Prodigy, cel t«8dW2t4«5$3&
► Available, via CompuServe, on OS2PF2, section 7,
: ; For access to dowfmserve, qsB i*«0M2«M,
PenDOS and Pen for OS/2
► OEM and Direct Response Marketing offerings
from IBM
* For more Information,
- Call IBM OEM Marketing
«► For ordering information,
- Cali IBM Direct Response Marketing
1-800-3SBM-OS2
ruiure nans
Pen for OS/2
Pen Enabled
OS/2 for PowerPC
Pen for OS/2 Enhancements (cont.)
Enhanced Compatibility Services
- Writing into Text Windows
- Confirmation Window (User Preference)
- Adjustable Pen Input Rate (per program)
Gestures Assignments for WPS Objects
- Most WPS objects instances
- Program and Folder Class objects
- System level assignments
Async Support in TeSepen
Pen for OS/2 Enhancements
► Mew Programming Interfaces for Handwriting
and Stroke Collection
- SOM Objects
► the IDF Framework
- PM Controls
» Enhanced boxed control
► Pen-centric SLE and MLE
- APIs
► WrtHandwritingWindow
► Mew Pen Input Messages
- enter proximity, writing started, enter/exit
window
OS/2 Enhancements for Pen
WPS Enhancements
- Gesture support (help, open, delete...)
- Pickup and Place support for moving,
copying and shadowing objects
- Restart button on Shutdown dialog
PM Controls Enhancements
- Left-handed scroll bars
- Sizeable scroll buttons on slider control
- Pen-centric MLE and SLE
Portrait/Landscape Video Modes
Pen Messages
WM_ENTER_PROXIMITY
WM_ENTER_W1ND0W
WM_EXIT_WINDOW
WM_WRITINO_MODE
WRfl_TOUCHDOWN
WMJJFTQFF
WM_TAP / WR/i_DBLTAP
WMJSTRQKE
WMJSENSORMOVE
WM_EX8T_PROXlMITY
WM__RECO
WM_RECO_COMMAND
Red - Reeo Even! Delivery APIs
- Interpreting Gesture Events (WP_RECO)
- RedQueryRecoHandle
- RedQueryRecoSubsystem
- RedRecolDFromName
- RedRecoNameFromID
RECODAT A _ "
.ID =42 (= "PIGTAIL")
* Virtual ID = VE_DELETECHAR
. Bounding Box = Max X,Y Points
* Hot Spot = Touchdown Point
* Target Window = Hot Spot Window
* Cmd + Args = From Profile
* Assignment Type
= User | System
= instance | Class | Sys-
= Read | Read/Write
Wrt - Writing Subsystem APSs
- Point and Stroke Data
- WrtSetWindowPointRate
- WrtGueryWindowPointRate
- WrtQuery Stroke Data
- WrtMapPointLong
- WrtQueryPointAuxData
- WrtQueryEventData
- Device Configuration
- WrtQuerySystemCaps
- WrtQueryLocatorCaps
- WrtQueryButtonCaps
- WrtQueryDisplayCaps
- WrtControlDisplayBacklight
- WrtQueryinputDeviceNames
* System Values
- WrtQuery/SetSysValue
- Wrt Read/WriteSys Value
Sketch Control Enhancements
Sketch Control
■ Eraser mode
■ 1,2 and 4 pel ink
widths
* Get/Set High
Resolution Strokes
- Use For Signatures
0 Use For Annotation
* WC_SKETCH
- Get/Set Standardized Strokes
- Get/Set Scaling mode
- Get/Set Eraser mode
- Get/Set Background Bitmap
- Query/Set Ink Width and Color
- Undo Stroke
— Clear Stroke
- Set Invisible Ink
- Set Drawing Pointer Shape
- Render Strokes to Clipboard as BMP
- Get Bitmap
- Get Strokes
- Borderless Opl
Strokes inked and Buttered For
You
Handwriting Control Enhancements
(WCJHWXENTRY, WC_ENTRYFIELD, WC_MLE)
Enhancement
Boxed
Lined
Unlined
► Tab and Enter gesture
Yes
Yes
► Variable box size
Yes
IW A
*> Variable line spacing
N/A
Yes (lined)
► Variable colors (ink, text, boxes or
Yes
Yes
lines, background)
»> Variable ink width
Yes
Yes
> App specified pointers (proximity,
Yes
Yes
writing)
> Recognition constraints (symbol
Yes
Yes
sets, word lists, dictionary)
► Delayed Recognition
Ho
Yes
«- Support in Handwriting Pad
Yes
Yes
input Data Framework (IDF)
* SDF fs a SOM object based framework that
provides and manages all aspects of pen Input.
- Inking
- Stroke Collection
- Text and Gesture Recognition
- Results post-processing
► IDF consists of three major object categories:
- input Data objects (he., stroke, doodle)
- Input Data Recognition (he., text, gesture)
- Input Data Managements (he., inking,
Handwriting and Stroke Collection
APIs, Controls and IDF Objects
input Data Manager (IDM)
Acts as an agent for aware applications
Provides both an object-oriented and a
procedural programming model
Manages the following operations:
- inking
- text recogntion
- gesture recognition
- stroke collection
Provides application notification throughout the
IDM operation
Input Data Objects (IDO)
s- Encapsulates STROKEDATA
9 - Provides services to:
- Scale points
- Draw stroke (on screen, off screen)
- Playback stroke
► Add/Remove/Query Stroke objects
► Record/Playback Strokes
► Draw doodle (on screen, off screen)
» Offsets points In doodle
Input Data Recognition (IDR)
Text
9 * Transforms strokes to text
► Discrete characters (boxed, lined, unlined)
► Multi-threaded object
- recognition occurs in a background thread
- Inking occurs on the user thread
► Recognition can be constrained:
- Symbol list subsets (he., uppercase, numbers)
- Word lists (i.e, Florida, Massachusetts, Ohio...)
- Words in System Dictionary
► Multiple results returned (most iikely-to-ieast
Input Data Objects (cont.)
Inker
v inks with different ink width, color, style, mix
► Ink or Erase mode
► Erases to background coior or bitmap
9 - SetPoint / SnkPoint interface
► Process pen messages interface (manages
pointers)
Input Data Recognition (cont.)
9 - Transforms strokes to gesture
- System gestures
- Letter gestures
9 . Recognition can be constrained:
- Gesture list subset (i.e., VEJEDIT, VEJNSERT,
VE_DELETE)
► SOP Object based transformation object
► Two transformation modes:
- JOTJNPUT (input JOT format data, output
STROKEDATA or doodles)
► JOT_0UTPUT (input STROKEDATA or doodles,
output JOT formatted data)
► No data loss on STROKEDATA to JOT to
STROKEDATA transformations
► Data toss Is possible on JOT to STROKEDATA
to JOT transformations. Problems:
- proximity points, height data, groups, opacity
Pen Extensions - After
Pen Extensions - Before
Pen Compatibility Services Flow - Before
Pen Compatibiiity Services Flow - After
IBM Speech Family
Puts the Power of Speech on the Desktop
► State-of-the-Art Technologies
► High Accuracy
► Ciierst/Server or Stand-Alone
► Real-world Applications
ruiure nans
Speech Enabled WPOS
IBM Speech Family
► Four Platforms
- IBM Personal Dictation System (IPDS)
► Large Vocabulary, Premium Desktop Dictation
- IBM Speech Server Series (ISSS)
» Large Vocabulary, Premium Dictation, Ciient/Server
- IBM Continuous Speech Series (ICSS)
* Continuous Speech, Speaker-independent
► Premium Command/Control, Transaction Processing
- Voice Type 2
» Value Dictation
Current Speech Recognition Technology
Speech Enabled OS/2 for PowerPC
Product Description
IBM Persona! Dictation
System
LARGE Vocabulary (20K)
Discrete...Word
...rain...in...
Training Required
Speaker Dependent
® Dictation
• Free-form text
♦ Word processing
« E-Mail
- Industry Applications
IBM Continuous Speech
Series (ICSS)
Medium Vocabulary (1K)
Continuous Word
No Training Required
Speaker Independent
* Command and control
ft Stock Brokers
ft Kiosk applications
♦ Simulation and training
« Computer navigation
► Port of IBM Personal Dictation System (IPDS)
- 20K+ Word Active Vocabulary
- 32K Word Capability
- State-of-the-Art dictation accuracy
- Specialty Vocabularies
► General Business
► Emergency Medicine (EMS)
- Radiology
► Journalism
* More planned (Segal, chiropractic,
engineering, police, etc.)
Speech Enabled WPOS
Product Description (cont.) IBM Speech Products Information
► Enhancements to IPDS: For more information...
- Speaker-independent navigation
- Separately configurable options Call 1-800-TALK2ME
► Navigation
- Dictation
- Concurrent access by multiple processes
- No Speech card required on PowerPC
platform
- Microphone is shared via MMPM/2
Pen for OS/2,
Pen and Speech Enabled
OS/2 for PowerPC,
ansBBsys rK8 blaijo
Moe Desrosiers
Mobile, Voice, and Pen Software
PSP Boca Raton
Agenda
OKS Personal Software Products
Object Technology
The Next Software Paradigm: Objects
<5 ^» IBM's Object Technology Strategy
IBM's Object Technology Products
- D«Alr«<nri^ T^TU-^B
w «. a tcvaiuiuuraiufgjr
® Distributed Object Services
« Application Frameworks
• Professional & End User Tools
< ®%» IBM's Operating Systems Direction
® IBM & Taligent
BUS Personal Software Products
The Business Benefits of Object Technology Object Technology
Dynamic Business Process Re-engineerin
SJH Personal Software Products
Object Technology
Business Models & Workflow
Structured Programming Model ° b i ect ° rlented Model
An IBM Vision for Objects!
SUM Personal Software Products
Object Technology
IBM’s 0
<> Intuitive
» Easy & Productive
o Flexible & Extensible
o Anytime...Anywhere
End User Experts
* Visual Construction
- Applications
— Procedures
> Flexible & Extensible
_j o 'Plug & Play'
Engineers & Domain 1
Object Modeling (Metaphors)
Reusable Designs & Software
Flexible & Extensible Software
Programming via:
-Find
— Assemble
— Creation by Expansion
® Open & Extensible Binary Objects
® Language Neutral & Industrial Strength
/ Software Component Highways
® Distributed Object Services
® Full OMG CORE A 1.1 Compliance
/ Component Sc Framework Industry
® Automates the Design & Development of Applications
® Component Oriented Assembly (Plug & Play)
/ Choke of Development Sc Assembly Tools
® Professional Development Solutions
® Visual Programming & Assembly Tools
P* ft
ESffl Personal Software Products
Object Technology
Obiect Packaging Tecimolo
W& Personal Software Products
Obiect Tet
IBM is an Industry Leader in Exploiting
Object Technology Starting 2 Years Ago!!
v" Exploited in Products TODAY
v Provides Unique Benefits
v Objects are Strategic to IBM’s Future
Object Enabling
for OS/2
Advanced
Object Enabling
OS/2, AJX & Windows
[gent
”Islands of Objects ”
C++
C++ Smalltalk
<m \ **
sa Sm
|
BflH| "
$1$° & |
✓ SOM / OO Tools
Vdsomc/s
v OMG CORBA
iiiwiir'
11 ta lk
Workframe
: : : : : ; :^ : if*i’rtner Tools
:j:jjg:$penDoc
^‘Portability
✓ Advanced Desktop
v Enterprise
The Key to True Software Reuse:
OBJECT PACKAGING TECHNOLOGY!!
Business Tools
4GLs Case Tools
REXX Basic
C COBOL etc "
Binary
Software
Objects
Binary Upward
Compatible Objects
Open and Extensible Software Components
SHI Personal Software Products
'Z Object Packaging Technology
e Encapsulation
e Inheritance
e Polymorphism
\f Industrial Strength Class Libraries
® Binary Object Distribution
o Binary Upward Compatibility
« Shared Class (Execution)
0 Highly Compact & High Performance
)/ Language Neutral
« C, C++, Smalltalk
® ORexx, Object Cobol
« Native Compiler Support
® Others
y Binary 'Black Box'
Reuse
y OMG CORBA Compliant
y Broad Platform & Industry Support
• OS/2 « HP/UX
0 AIX 0 OSF/DME
« Windows e MVS
o WP/OS « AS/400
• System 7 « ISVs
« Netware « Others
Distributed SOM/CORBA
WM Personal Software Products
Object Technology
Class Definition
(IDL Interface)
SOM Language Neutral
Interface definition Lang.
(CORBA IBL)
Native Code (eg, C++)
.f.'
. . .
SOM/TOL
i IDL Interface -
Native SOM Stqppart
Compiler
. .
(eg, C++ Compiler)
/
n SOM Mode"
Switch On
Lang. Implementation
Template
Write
Implementation
Code
SOMobjects Developers Toolkit
IBH Personal Software Products
>■ Object Packaging Technology
> Distributed Object Services (ORB)
> Fundamental Frameworks
s> Full OMG CORBA 1.1 Compliance
Utilities
« C/C++ Bhidings
+ OEDL Migration Aid
« Interface Repository
« Headers & ExeeutaWes
Workgroup Enablers
SOM/DSOM Directions
Supportive Tool Sets & Partnerships
09 Personal Software Products
Object Technology
09 Personal Software Products
Object Technology
C++ Compilers/IDEs i
y IBM C Set++ (Native) ' I
y Metaware High C++ (Native) j
v Wateotn C++ (Native), i
V Borland C++ i
Visual Smalltalk Environments
'/IBM VisuaJAge (Native)
y ParcHace VlsualWorks; (Native)
y Bigit&Ik Smalltalk/V & Parts (Native)
ANSI C Sc C++ Compilers
y SOMobjects C/C++ Bindings
4GL.s Sc End User Tools
y Watcom VX-REXX
v IBM OREXX (Native)
y Objective MacroScope (Native)
y AM - Intelligent Environments
Announced Tool Support
y Microfocus COBOL
y- Intermedia
y Object Design
✓ Kaseworks
y inference
</ Others in Works...
y Easel Corporation.
Frameworks
mmmmrnm
>/ Enterprise Support (OSF/DCE)
/ CORBA Object Services & FWs
'S CORBA Partnerships
® Hewlett Packard BOMF
• Sunsoft DOE
® Others
✓
Expanded Platform Support
/
Pervasive Language/Tool Support
• C/C++ Bindings
» IBM C/C++
® IBM Camelot
o Metaware C++
a Borland C++
e Digitaik Parts/STV
® Microfocus COBOL
o Parcplace
® Inference
a Kaseworks
o Object Design
a Easel
® Intermedia
o Others _
CORBA Object Services
Application Frameworks
OS Personal Software Products
Object Technology
Fundamental Framework - Replication
OS Personal Software Products
Object Technology
Application Framework
"A Generalized Solution to a Complex
Problem, which is Captured in a
Framework of Interacting Objects ,
That is Designed to be Customized &
Integrated with other Frameworks 9 '
/
Automates the Design, Development and
Maintenance of Complex Application Domains
/
Significant Increases in Productivity, Quality
and Innovation
Specialized to Meet
YOUR Goal!
Automates the Design and Development
of Distributed, Replicated Objects
© Hides Complexity
© Significant Code Reduction
® Flexible & Extensible
Single Logical View of Multiple Objects
® Automatic Logging & Synchronization
• Locking for Control Policies
® Fault Tolerance & Master Recovery
® Low Overhead for Zero Replicas
® Distributed & Cross Process Replicas
/
Basis for Innovative Distributed Applications
® Collaborative Applications
• Cashing Policies
IBM SOM Frameworks
®31 Personal Software Products
Object Technology
Workplace Shell
✓ GUI Integration
✓ Reuse of Function
✓ SOM/CORBA EDL
OpenDoc
v Compound Documents
v Truly Open
v Enhanced Functionality
v Easier to Program
v OLE Interoperability
Tallgent Frameworks
v Design/Dev. Automation
•s Cross Platform APIs
v Productive & Innovative
✓ SOM/CORBA IDL & C++
„ TSSL Personal Software Products
OpenDoc Compound Document: Architecture object Technology
Component Integration Laboratories
v IBM v WordPerfect ✓ Oracle
v Apple s Taligeet * .
OpenDoc ^ Novell v Xeros
^ OS/2 ) ^ WndoTrg j ^ Sy*tcm7 j ^Netware j ^ _ J
Distributed &
Cross Platform
Document Centric, GO User Interfaces
HX Personal Software Products
juarado|3A3@ nopB3i|ddy juaSifex
SWPOJA aJVMltOf! HMOSJ 3 A | p^ |
$TOpus>dapii| ?$ iocIq ®
SJOOJ W3Wdop<M(l QQ /<
sps9uodtuoj $> syjOM9tumj qq />
swatsd$ SutfOMdo oo ting />
nopBjioidxg OO W& ®
§Mpmdino3 affiieopn|OA3^j ®
soiSoiouqsax jlq / arrHT a 9S®q^|^(|/iC||A|p3llil03 ®
insraasaopng; |na 3 |prx a sa| 8 oioni( 3 ax XO SO ®
snaoj sav 'Apv a smaox 3 |fcJodLi 03 /dSudLia:pig •
raeax ’ Aa CI 3-*°0 •
s^poMamtux aTCXs •
SE30X Ja§X"p®3 ®
dH
dSojotitjMji pzfqQ
sjonpojj 3 j»M.tfos j&uosjsj jggj
aampuaqiq; 9 |dp|nj\[ - * 3 Ui ^ms§||bx
ASofompjjr pdfqQ
stvnpojj puos&d mrg
raopefOAg |M3rae30|3 panod 10103
suot$t)3tjddy potiuj uotsstjpft/ sstidiaws (S/D) dV ausm qdddw&j
yjOAiatuMrf aoiABQ sottjdm*)
wafqo
stmpoJJ v&Mtfosivuosoj j pg
IMS^ipx -
Graphics Device Framework
nd Document Evolution
IM Personal Software Products
Object Technology
Taligent, Inc* - Multiple Inheritance
HIS Personal Software Products
T
msmwmm
B8M Personal Software Products
Object Technology
IBM Personal Systems Platform Direction
Increasingly Rich 00 API s (Preserving Traditional APIs) « « «« b«m
AS/400 OO System Structure - Direction
USS Personal Software Products
Object Technology
Increasingly Integrated Object Capabilities (Preserving Traditional APIs) 3 m ^ ^
Languages / Tools
/ C++ IDE
Smalltalk (Envy/400
V RPG, COBOL, C
</ 4GLs
Industry Frameworks
(Retail, Finance, Health, CIM, etc}
Cross Industry Frameworks
(OMG Object Services, Business Objects}
■ System Midware : ' • |W
(System Class Libraries <& Genemal Object Services) slllll
. Taiigent
MVS Object Oriented Solution - Direction
XSF3 Personal Software Products
Object Technology
Increasingly Integrated Object Capabilities (Preserving Traditional APIs)
Services
y Education
v Consulting
'f Contract Engineering
V Business Engineering
Industry Frameworks
(Product Mgr - CIM, etc}
Class Libraries/Frameworks:
(OMG Object Services, ACTS, etc)
Language / Tools
x (C, C*+, OOCoboi, OREXX, etc} ' • ;
■&SOM/CORBA'
Summary & Roadmap
ffW Personal Software Products
Object Technology
IBM's Object Technology Products
e Object Packaging Technology
@ Distributed Object Services
® Application Frameworks
© Professional & End User Tools
Object Enabling
for OS/2
v SOM / OO Tools
•/DSOM C/S
v OMG CORBA
'§mmm
iiiiii
Advanced
Object Enabling
OS/2, AIX & Windows
Ml
IgjS-iiBipenDoc
Portability
✓ Advanced Desktop
•/ Enterprise
Utalk
Workfirame
:;:#$iiiirtner Tools
/
0003
How to Introduce Object to Your Organization
David Moskowitz
Productivity Solutions
How to Introduce Objects to your Organization
Expectations
► If you have a question, ask its
► Overview of a tong term process
► There is no magic cookie
Copyright 1994, David Moskowitz. All rights reserved.
Slide 1
Goals and Agenda
► To object or not to object...
► Understand what OOT means
► Know the steps to develop a plan
*- Set a goal to learn from the first effort
Why Objects?
► Reusable software
► Why not?
► Gui
► Management wants to
► Technical staff wants to
► Competition gives us no choice
You need a reason to change
How to Introduce Object to Your Organization
Slide 2
Arguments against objects
► It's too hard to learn
► Others have had trouble
► It costs too much
► Techniques unproven
► The fad will pass
You can succeed...
...if you want to & you have a plan
The Myths of OOP
► Objects means reuse
► Objects means good user interface
► Objects are a magic cookie
► OOP Is learning the language
► OOP is a new way of doing what we do
► Any good professional can pick up OOT in 6
months
The plan - 6 basic steps
► Pick a problem
► Make it short
► Do something measurable
► Pick a goaf people can commit to
► Do ft with available resources & budget
► Evaiutate the results
Pick the right problem
► Something with a degree of urgency
► Not risky, but necessary
► Vital the team see it through to completion
► Need only a small team
► Develop experience
Copyright 1994, David Moskowitz. All rights reserved.
How to Introduce Object to Your Organization
Problems to avoid
► Critical project, tight budget
► To© many roadblocks
► Long term view missing
► Support lacking
► No way to evaluate results
Impact (measurable)
s- Make a contribution
» Easier to evaluate results
► Proejct planned for success
► Get commitment
- Staff commitment is more likely if the people
believe in the results.
Copyright 1994, David Moskowitz. All rights reserved.
Slide 3
Quick achievement (keep It short)
6- Hold the team together
► Learning is easier with short duration
► Low frustration level with Initial problems
► Add more people sooner
Available resources
► More likely to accomplish the task
► Attract less negative attention
► Consider outside mentoring
► Develop internal mentors
How to Introduce Object to Your Organization
Slid© 4
Evaluate results
Tradeoffs I
► First effort not perfect
- Don't plan to keep it forever
*■ Learn from mistakes
- What worked, what didn't
» Iterative development
► Two parallel efforts & compare
- OOP
- Traditional
- When you finish make changes
► Low risk & reward
- Self-help
- Seif-study
- 1 person project
- Some experience
► Low risk, moderate reward
- Moderate cost
- Low impact project
- Small team
- ODD St OOP
- Mentoring
Tradeoffs II
Basic goals
► Moderate risk & reward
- Medium size project
- Reengineer
- Training
- Mentoring
► Moderate risk, high reward
- Strategic project
- Training & mentoring
critical
- Hire experts
► Effective use of OOT
► Design and build many classes
► Learn the tools
► Learn the class libraries
► No longer fight OOT
► Prefer reuse versus build from scratch
Copyright 1994, David Moskowitz. All rights reserved.
How to Introduce Object to Your Organization
Slide 5
Advanced goafs
► Object think
► Reuse designs & classes
► Translate requirements into models
► Architects
Keys to success
► Process not a quick fix
► Start reasonable goals
s- Control expectations
► Personal mastery & development
► Keep clients & management informed
► Control project growth
► Have a plan, before you start
The other stuff S
The other stuff Si
► Evaluate possibilities
- Pick a language & tools
► Study class libraries
- You can’t reuse what you can't find
» Keep records of ideas accepted & rejected
- Today’s reject may be a solution Safer
► Basic training
i> Get experience by building tools
► Prototype
► Re-architect and re-design
► Plan for demonstrations
*- Method mentor
Copyright 1994, David Moskowitz. All rights reserved.
How to Introduce Object to Your Organization
Demonstrations
► Celebration of achievement
► Helps develop focus
► Use ft to re-architect & re-design
The role of mistakes
► Mistakes are vita! but only if you learn from
them
s- Best if your own team can spot mistakes
Copyright 1994, David Moskowitz. All rights reserved.
Slide 6
► Facilitator
► Be familiar with more than one
- Booch, Coad, CRC, Rumbaugh
► Method support tools
* Work with small team
► Small team work with others
Goals redux
► Build a common engineering vision.
► Develop an architecture and framework for a
product family (plan for reuse).
► invest in tools & technology to build an
excellent development environment.
How to Introduce Object to Your Organization
Slide 7
Questions
► I’ve never heard a dumb question!
Thank you
For more information
► The oniy dumb question is the one that isn't David Moskowitz
asked! Productivity Solutions; Inc
164 Avondale Road
Morristown, PA 19403-2952
610-631-5685
76701 A 00@CompuServe.com
Copyright 1994, David Moskowitz. All rights reserved.
OpenDoc for OS/2
OpenDoc for OS/2
BocumenKJentric Programming
Robert L, T yeast
OpeODoO fa f OS/2 Architect
Baca Raton . liiii
tycast@vnet JbmnCotTi
HIHBiiiiii
- the fettowfag terms, m this pobMtW, am- tr^masfcs O* to* \
11 ij &$£
«QS£ System
» th& fc^owmg texmSt sis^c* in thos putrftc^ton, am tra^rnarfe?-of other
• '
- OpenOoc r B^to Appfe Computer ?nc,
- Urrjy 4$#Xj System taboratortea, Inc.
- Windows ^orosott COtp. || :il:l:|l \& | ll;:: :;:’
: : :; What’s OpertOocf
v ■.. TS llllllll
|:||| ©oeiirhent-Gao trie |i||
111 ' | ■; I III | lllllll
: .. ■; . ., : HI
: - Object Technology
- Storage
- Compound Documents
Application-Centric Computing;
► Monolithic applications
► Datatypes limited
► interoperability limited by cooperating suites;
Bento format; Key Ideas
Everyth! ng is an object
Objects have persistent ID's
Ail metadata lives in Table of Contents
- Flexible {e„g. support Interleaving)
- Efficient (Inspecting a container fast)
- Support existing for mats with out cha
Objects consist of values
QpenDoc Storage;
iiillitii!
pu?rentPr^t.;; :
F'stSs-ge Ltoft
•^afee;
ii'ffiliatl'ilbdei;
p - Session
■ - Globa! operations
- Examples: memory management, error
reporting, etc,
- Provide portability
► Container
- Platform independent I/O
- Provide a stream I/O interface to the container
storage memory, clipboard, network, etc* .
VialU6.: : | ; :; ;;'; : |||;|ly‘ : .J !!•'':
- I/O transformations and indirect values
Open Doc for OS/2
liilillilllll
lipiiliilliilllll
- Slractee-based
. - Contrfnw/Objscli^op.;
** Ifefiv© dafta
-* Standards •
- Pertafcfe
- Extensible
- Ptatfomts; .. |
I- OS/2
* Dos
ill;.'*- Windows iiiiliii
|||» UNIX lllllllll
ill * otc. llllllllllllll
Iflf Me^dteBi/ibgdadi- f |||
- DirectoryTile
donative data support
|| No standards ||§||ff|
-Unknown
- Unknown
1 — Pfatfotft*ss
BmIMMMI
Compound Document Architecture
► Heart of the QpenDoc Technologies
► Provides mixed-data types
► Ptsihfldeliiy display and printing
► Based on "part handlers"
- Editors
- Viewers
► Multiple active parts
*• Irregular, operlapping parts
► User starts with stationery and builds solution:
* in-place activation {Inside-out) ■ . ■; ...
l|ll U nking i
► Parts dan :share, data with! n the sa me document
*- Parts can share data with other documents on
the same computer :fg l|lt||I
» Parts can share data with documents on other
i;P^rf®^=.N^ii)hi ddeiimeiitsiOniihe' v
network of mixed type (full heterogeneity) : j'i".
■:DpeiDdc;Ardhitectu^; :
Pag© 4
OpenDoc for OS/2
_ OpenDoc Objects
► Storage System
- Container
- Document
- Draft
- Storage Unit
► Clipboard
* Drag & Drop
- Link
OpenDoc Objects;
► Imaging
- Canvas
- Shape
- Transform
- WlndowState
- Window
- Layout
. - Frame
- Facet
OpenDoc Objects
. ► Hi Events
► Miscellaneous
- Dispatcher
- Translation
■ ~ Arbitrator
- Symbols
•p; : - FocusModule 7v ; -'
► Semantic Events
-Undo |||11!!!!!!!!!!1!!!!#!!1 !lll!!!lli!!!l!!|!|||||||lli
: .• ' - NameResolver 7 1
- Extension
- Semantic Interface 7;;
- RefCntObject
p/|ij§ : yes^g|;ifttirface:^j7'7 : :
- misc Iterators
Page 5
OpenDoc for OS/2
OpenDoc - Object Relationships
l^^$torage$ygteret
f' ^ jj 11 ,-i|» j fira& }
Hfrfcf- Ptsp^ehModute. |
mm
► Open Scripting Architecture
- Fhovldes record/piaybaek
- Natural language support
- Pluggable script languages
Launch "RflyApp”
Tell "felyApp”
Pritrt Dpcurnent S
Zfffl&ilM&mwjit'g.?.
Open Events
► Based on a standard registry of verbs and
object classes
► Arranged in suites \ ^ \
» Define:
- Events e.g* Open, Close, Select, etc:;;:;:'
- Object classes e*g< Application, Document
- Descriptor types e<g* Boolean, Fixed
- Key forms
Object Specifiers
► Every event can operate on multiple objects
e.g. CUT ' • ' ::; : ;|||||||||||}|;|i|
:. -Line:' : " .
-Paragraph
► Fine-grained objects
- "3rd word on the fifth line of the 1st page”
- "Every line whose text contains 'OS/2”'
'•: object specifiers and decoding them
Page 6
OpenDoc for OS/2
Ofafect Services library
^'lt means page 1
token ..."
| What does this
I object spec. mean?, ;
OSA Compliant Applications:
MOw appl ications can bo;t>iM| from parts
&ift©rem l;pv;©:is ; pf : :spppp:rt :
■ ■ I f : H II ! II : llillll III lllli ||
|In|«li. llllllllill!!I! I : «
- Recordable (Factored applications)
Page 7
Open Event Standard Suites
Open Doc for OS/2
OpenDoc and OLE
1 OpefsOoc
- Object programming
> porta Compliant
Strong object
iecfimfogy (SOM} elg
: mfmiunce supported
- pe^Dprs^nt^ffors
* One mmt dace fpert)
i|||| approx, m methods
-h Activation motM iiii :
:{|:| n Mmde-mtt : i|ip:i||||
i||| * Highly usable
> ote : .
- Disject programming
modjcf
- NetCorha Compliant
|i ; » Weak object 0 :|||g|
• technology (COM) e,g» \
inheritance NOT
supported
~ Development effort
* 14 interfaces
- 13 B functions
•<* Acfivaiori model
M ,* Oiffaide-in .' ;
•:?.;■ * Poor 01 marks
Who Owns Open Doc?
wmm
wmmm
*■ Licensed through CILabs
.1 II li| lllllllilllllll II
i^forenc©' i mple mentations
^! Cefertiipisai'lioK ; pFbif rairiiij= : ” I: ? |:
► For more information
:: contact CILabs: i' : ' :
§jj:. : : ;•:•!: I Cfcifcpanerst U&ard fortes. •
-688 Fourth Avenue
Sets Frartets&o, CA 941 IS
( 415 } 750-8352 (VOtC 6 }
OSA t«5J 757*4829 ffcx)
jedijielLorg internet
Page 8
► GpepDop * OLE
- Sftapa support - Shape Support
*• dvertapptrtg <■ nm*averlappkt§
>■ irregular (regions)
: *. Setiptipg model ■ i ;
§HI automation |||||||
1 recottf/playhaGk
- natural language
support
- standard "suites"
- Certification process
- Open standard
- rectangular oofy
r Scripting model . • lillf
» automation
liiiiiillplilii
- m nature} language
support
|| I - no standards- ||:|?|||
- Mo certification process
- Proprietary i|||: : i|||l|
implementation - ;:||||
Where to Get More Information
W The Developer Connection for OS/2
- 1-800-6DEVCON {U.S.A)
•• - 45-4-810-1 500 (English)
| 45-4-810-1000 t^eutsch)
► CompuServe
- "CO CS2DF1”
- OpenDoc for OS/2, Section number 14
0006
VisualAge Features
Graphical User Interface Development Environment
Multiple Protocols
and Interfaces
£
rite Process of Assembly
Iterations
'Definition'
Composite: Part
Mhd/.dr:
Fabrication:
Search for
Add parts, to
free-f r tsurfa
Connections
Customize
.• (optional)
Application Development Environment
Composition Editor
Visual Programming
CSient/Server Support
Multiple Protocols And Interfaces
Team Programming
Evolution in Application Development
Object Oriented Technology
✓ IBM Smalltalk
. complete Smalltalk Development Environment
* Based on Standards
Object Oriented Technology
✓ IBM Smalltalk (continued)
> Common File System
*POSIX.1
> Common Language Data Types and Common Lanaguage
Implementation
* Smalltalk - 80: The Lang uage and its Itrmlemsnlslm
* Smalltalk Portability: A Common Base
> Common Process Model
* Smalltalk - 80: The Langu age and its Implementation.
■* Common Graphics
* X/Windows
- Common Widgets
* OSF/MOTIF
Development System Requirements
Runtime System Requirements
« Client
> 25 Mhz 486 Micro Processer
* 16 MB RAM
> 15 MB Hard Drive
> 20 MB OS/2 Swapper
» VGA Graphics or Higher
(Recommended XGA or SVGA{min 1024 by 780 pels})
• Application User
* 386 Micro Processor
- 8 MB RAM
► 20 MB Hard Drive
- VGA Graphics or Higher
Server .
* At Least 55 MB Hard Drive for Library
(Recommended 400 M)
VisualAge Rollout
Application Portability - Future Platforms
- Windows and A1X Next
- Other Platforms to Foliow as Prioritized by Customer Demand
• MAC, SUN ; HP, NT
Additional Features
- SOM, DSOM
Future Database and Communications Support
- Based on Customer Demand
How to Get Started
y/ Select Meaningful / Manageable Project
</ Pick Motivated, Small Team
y/ Train
y/ Mentor
y/ Set Reasonable Target
y /Scale Up For Next Project
List Prices
Summary
VisualAge Standard $3925
VisualAge Team $7850
Add On Features:
✓ Communications/Transaction $2755
Component
✓ Multi-Database Component $1565
* COBOL Component $2350
v Multimedia Component $779
Industrial Strength Power Tool
y/ Rapid Application Development
V Extensible, Flexible, Promotes ReUse
y/ Based on Standards and Open
>/ Strategic and Tactical
y/ Integrated -
► Visual, Team, and Language
y/ Use Existing Skills while moving to OO
v Build Skills -
Developer
PowerUser
y/ Increase Productivity 10X or More
> Means, Faster Dev., Satisfied Users
- Save Time and MONEY !
0007
Introduction to the
SOMohjects Toolkit
Ira R. Forman
Object Technology Products
11400 Burnet Road
Austin, Texas 78758
Code Reuse Of Object-Oriented Programming
DISAPPOINTING
. Languages have been over emphasized
. Packaging of libraries has been ignored
Procedural Library
Class Library
Client
Language
Client may use any
language
Client must use library
language
Shipping
Binaries can be
shipped
Source code must be
shipped
R0754A.PRS (LAN) 677J/003/IF
Object Oriented Programming
The three pillars of 0-0 Programming:
® Encapsulation
• Inheritance
• Polymorphism
The Promise:
« Software Reuse
® Increased Programmer Productivity
• Ease of Software Maintenance/Extension
Why the Difference ?
Binary standards No Binary standards
One of the many problems SOM solves!
07/25/9'
SOM Overview
SOM is a technology for packaging object-oriented class libraries.
SOM design goals:
■ Language Neutral
- State-of-the-Art Object-Oriented Capability
• Support for Industrial Strength Class Libraries
Language Bindings
What's a Binding?
R0754A.PRS (LAN) 677J/003/IF
SOM Compiler
SOM IDL = COBRA IDL
+ Encapsulated Implementation Information
interface dog : <parents>{
interface definition>
#ifdef_SOM IDL_
implementation
implementation information>
};
#endif
};
sc -sxh dog
C++ usage binding for dog
SOMobjects Toolkit 2.0
S OM com piler generates bindings;
this enhances existing languages, but does not replace them.
Coming soon: Direct-to-SOM C++ compilers
Smalltalk bindings
07/25/9^
A Programming Example
Definition of a Class
. Implementation of the interface of an object
Example of a class
. The animal class
What is the animal?
• an animal eats some kind of food
R0754A.PRS (LAN) 677J/003/IF
The SOM Application Development Process
Defining the class animal
#include <somobj.idl>
interface animal: SOMObject {
attribute string food;
void print();
#ifdef_SOMIDL_
implementation {
releaseorder: _get_food,_set_food, print;
07/25/9*
SQM compiler creates a method template file...
... which you fill In:
animal.C file
edited animal.C file:
#define animal_Class_Source
#include <animal.xih>
SOM_Scope void SOMLINK print( animal* somSelf,
Environment *ev)
{
animalData *somThis = animalGetData(somSelf);
animalMethodDebug( "animal", "print");
}
#define animal_Class_Source
#include <animal.xih>
SOM_Scope void SOMLINK print(animal* somSelf,
Environment *ev)
{
animalData ’somThis = animalGetData(somSelf);
animalMethodDebug("animal","print");
somPrinti^nammaf food; %$W^aomSalf->^sUooclCavJ);i
The animal client as a:
Inheritance (Class Derivation)
#include "animal, h"
mainQ
{
animal pooh;
Environment *ev;
ev=SOM_CreateLocalEnvironment();
#include "animal.xh"
mainO
{
animal* pooh;
Environment *ev;
ev=SOM_CreateLocalEnvironmentO;
pooh = animalNew();
_set_food(pooh,ev,"Honey");
_print(pooh, ev);
SOM_Destroy Local Envi ronment(ev);
_somFree(pooh);
program output:
animal food: Honey
pooft - new arsmaf
SOM_DestroyLocalEnvironment(ev);
delete pooh;
_get_food
_set_food
print
We have an animal class. Objects of type animal can
• be assigned a food
Consider writing a dog class. Objects of type dog can
• be assigned a food
• make a noise
We can derive a new class, dog, from the existing class, animal
R0754A.PRS (LAN) 677J/003/IF
07/25/9^
Implementation of dog class
Implementation of dog class (cont.)
dog.idl:
#include "animal.idl"
interface dog : animal {
string bark();
implementation {
releaseorder: bark;
override: print;
dog.C :
#define dog_Class_Source
#include <dog.xih>
SOM_Scope string SOMLINK bark(dog *somSelf,Environment *ev)
{
static string noise = "Unknown Dog Noise";
dogMethodDebug("dog","bark");
return noise;
}
SOM_3cope void SOMLINK print(dog *somSeif,Environment *ev)
{
dogMethoduebug( ,: dog","print");
animal ::print{somSelf,@v);
somPrintffDog says: %s\n",somSelf-> bark(ev));
}
C++ Client Code:
Polymorphism (Multiple method definitions)
#include "animal.xh"
#include "dog.xh"
main(){
animal* pooh;
dog* snoopie;
Environment *ev;
ev = SOM_Create Local Environ ment();
pooh = new animal;
snoopie = new dog;
pooh->_set_food(ev, "Honey");
snoopie->_set_food(ev, "Dog Food");
pooh->print(ev);
snoopie->print{ev);
SOM_DestroyLocalEnvironment (ev);
delete pooh;
delete snoopie;
}
program output:
animal food: Honey
animal food: Dog Food
Dog says: Unknown Dog Noise
» animal defines a food attribute and print() method
. dog derived from animal, redefines print(), and defines bark()
» littleDog is derived from dog, redefines bark()
» bigDog is derived from dog, redefines barkQ
R0754A.PRS (LAN) 677J/003/IF
07/25/9'
bigDog Implementation
littleDog implementation
bigDog.idl:
bigDog.C:
#include "dog.idl"
interface bigDog : dog {
implementation {
overide: bark;
};
};
#define bigDog_Class_Source
#include <bigDog.xih>
SOM_Scope string SOMLINK
bark(bigDog* somSelf, Environment *ev)
{
static string noise="Woof Woof";
bigDogMethodDebug("bigDog","bark");
return noise;
}
littlePog.idl:
littleDog.C:
#include "dog.idl"
interface littlePog : dog {
implementation {
override: bark;
#define littlePog_Ciass_Source
#include <ldog.xih>
SOM_Scope string SOMLINK bark(littlePog* somSelf,
Environment *ev)
{
static string noise = "woof woof";
littlePogMethodPebug("littlePog","bark");
return nosie;
}
Client Code
#include "animal.xh"
#include "dog.xh"
#include "Idog.xh”
#include "bdog.xh"
main()
{
animal* pooh;
dog* snoopie;
little Dog* toto;
bigDog* lassie;
Environment *ev;
ev = SOM_CreateLocalEnvironment();
Client Code (Cont.)
pooh = new animal;
snoopie = new dog;
toto = new littleDog;
lassie = new bigDog;
pooh->_set_food(ev, "Honey");
snoopie->_set_food(ev, "Dog Food");
toto->_set_food(ev, "littleDog Food");
lassie->_set_food(ev, "bigDog Food");
pooh->print(ev);
snoopie->print(ev);
toto->print(ev);
lassie->print(ev);
}
R0754A.PRS (LAN) 677J/003/IF
07/25/9^
Program Output
animal food Honey
animal food: Dog Food
Dog says: Unknown Dog Noise
animal food: littleDog Food
Dog says: woof woof
animal food: bigDog Food
Dog says: Woof Woof
SOM Design Goals:
• Language Neutraf
• State-of-the-Art Object-Oriented Capability
• Support for Industrial Strength Class Libraries
Class libraries built with SOM can be
• defined and implemented in one language,
® used from another language.
The class client can...
• instantiate objects
• derive new classes
• override existing methods
Even from a non-object-oriented language!
SOSWS Design Goals:
• Lanaguage Neutral
« Support for 1 ndustrial Strength Class Lobraries
SOM 2.0 Kernel:
* C and C++ Language Bindings
♦ Inheritance, Polymorphism, and Encapsulation
• OMG COBRA IDL + encapsulated implementation information
* Multiple Inheritance
• METACLASS PROGRAMMING
SOMobjects Toolkit:
. Container Classes
• Interface Repository
. Distibuted SOM
* Persistent SOM
« Replication Framework
. Emitter Framework
SOy Kernel
R0754A.PRS (LAN) 677J/003/IF
07/25/9'
tc.
07/25/9'
SOy Design Goals (Cont.)
SOM Design Goafs:
. Language Neutral
» State-of-the-Art Object-Oriented Capability
* Support lor luftreittel Strength Cteos Libraries
Characteristics of industrial grade class libraries:
• Ship without source code
• Upward binary compatibility
• Support shared libraries
Question: What can I do without recompiling?
Answer:
The Goals
SOM
C++
Add method
yes
no
Add instance
variable
yes
no
Add new class
yes
no
Migrate method
upward
yes
no
Migrate parents
downward
yes
no
Retract private
instance method
yes
no
Retract private
instance variables
yes
no
Migrate metaclass
downward
yes
no
SOM facilitates library evolution
by supporting all of these transformations
• Language Neutrality
• State-of-the-Art Object-Oriented Capability
• industrial Strength Class Libraries
are achieved
Making Reuse A Reality
R0754A.PRS (LAN) 677J/003/IF
07/25/9'
6000
Metaclass Programming
The Next Epoch in the
Evolution
of Software Development
Ira R. Forman
Object Technology Products
11400 Burnet Road
Austin, Texas 78758
A Different (New?) View
«, Old Object-Oriented Programming (Wegner 1987)
OOP = objects + classes + inheritance
« New Object-Oriented Programming (Forman & Danforth 1993)
OOP = objects + classes + class operations
class operations = {
subclassing (i.e., extension, subalgebra),
join (i.e., multiple inheritance),
meet (i.e., insertion of new classes),
wrapper (i.e., before/after mertaclasses),
}
R0834A.PRS(LAN) 677J/003/IF
Machine language programming
Assembly language programming
Procedural language programming
Structured Programming
Abstract Data Type programming
Object-oriented programming
What's next?
System Object Model
07/25/9'
Metaclass Programming
Nouns are used to name classes
The noun describes the set of objects belonging to the class
Metaclasses change classes by
• Adding new methods
• Adding data
• Changing the set of parent classes
® Redefining methods
a Redirecting method through somDispatch
Specialization is an operation achieved by subclassing
Knowledge representation is an important goal of OOP.
Adjectives are used to name metaclasses How A Metaclass Imparts A Property
Metaclasses are used to capture interesting properties
R0834A.PRS(LAN) 677J/003/IF
07/25/94
Yawn!!!
What about barking???
A BlueDog can also be programmed as follows
Because multiple inheritance is an operation on classes that creates a new class with the
union of the methods.
BUT...
WOOF
WOOF
Barking in not an additional method,
rather barking is an example of property that is
wrapped before and after all methods.
The SOMMBeforeAfter Metaclass
Usefulness of Before/After Metaclasses
sommBefor©Method
somm After Method
Create your own metaclass
1. Subclass SOMMBeforeAfter
2. Override sommBeforeMethod
3. Override somm After Method
SOMMBeforeAfter takes care of the dispatching.
R0834A.PRS(LAN) 677J/003/IF
07/25/94
SOM Makes Programming Easier
interface AtomicDog: Dog {
implementation {
metaclass = Atomic;
Composition of Before/After Metaclasses
R0834A.PRS(LAN) 677J/003/IF
Large Class Libraries
n classes
p properties
Dog
Traced
Cat
Persistent
Whale
Replicable
n*2 P
VS
n+p
SOM IDL
Interface <name>:<parent-list>{
<method-declarations>
#ifdef_SOMIDL_
implementation{
metaclass=<explicit-metaclass-name>;
};
#endif
interface FB-1 :Dog
{
SOMMBefqreAfter
};
implementation}
Technique 3
interface FB-3:BarkingDog
{
implementation}
metaclass=Fierce
};
R0834A.PRS(LAN) 677J/003/IF
The Combined View
Should each of these method work: Yes
Should each have the same meaning: Yes
How: What do FB-1, FB-2, and FB-3 have in common?
07/25/94
The Derived Metaclass
Metaclass Incompatibility
interface A { (does not occur in SOM)
void foo()
somSelf->somGetClass->bar();
interface B:A {
implementation{
metaclass = BMeta
Binary Libraries
Metaclass incompatibility
with
SOM
Metaclass compatibility
All have the same Derived Metaclass
The Metaclass Hierarchy determines the composition
R0834A.PRS(LAN) 677J/003/IF
07/25/94
Despatching
BeforeAfterDispalch( simpleObject,...)
BeforMethodDispatch(...)
dispatch of primaryMethod
AfterMethodDispatch(...)
simpleObject,...)
ifaMSaaassdemT^ BeforeMethod
call that BeforeMethod
else
for all parents of aMetaclass
call BeforeMethodDispatch( aParent, simpleObject,
^^^^^^^^^^Metaclass, simpleObject, ... )
itaMetacIass aefines AfterMethod
call that AfterMethod
else
for all parents of aMetaclass (in reverse order)
call AfterMethod Dispatch (aParent, simpleObject,...)
Conclusion
Metaclass Programming
enables the creation of
new operations on classes that
factor software in new ways
Making Reuse A Reality
R0834A.PRS(LAN) 677J/003/IF
SOMObJects 2.1 - Metaclass Framework
SQMCIass
■MmpffAr* r . i
attNi
07/25/94
APPC afWff^ctjOriented
Programming
APPC Market Enablement
Research Triangle Park, NC USA
Phone: 1 -919-254-4957
Fax: 1-919-254-6050
Internet: appcmrkt@vnet.ibm.com
Review of object-oriented principles
■ How can APPC programmers use object-oriented
programming techniques?
■ How can object-oriented programs use APPC?
= Visual development tooiS
- System Object Model
mm
m
Encapsulation
■ Users access object data (instance
variables) only through procedure calls
(methods)
■ Can be done with procedural languages if
users follow conventions
&
Program Behavior = Human Behavior
■ Humans classify objects to save memory
■ Programs should exploit this
- Behave the way human users expect
- Perhaps achieve some coding economies
(Q IBM toparaltan 1994
Class Hierarchy and Inheritance
(C) EM OcrpanStcJi 1S34
Example: AFTP and NameServer APIs
AFTP
- aftp_create(), aftp_destroy()
- aftp_set_destination()
“ aftp_set_mode_name()
- aftp_send_file(), aftp_receive_file()
- aftp_set_local_traceJevel
- aftp_show_error()
APPC Name Server
- aname_create(), aname_destroy()
- aname_set_destination()
- aname_query(), aname_receive()
- aname_register()
- aname_set_trace_level
- aname_format_error()
(C) (BU Corpardlan 15S4
■ cpicinit
■ cpicerr
« cpicobj
■ aftp
« aname
■ TransactionProgram
- Send
- SendAndConfirm
- Converse
Example: AFTP and Name Server as
Subclasses of CPIC_Program
* CPIC_Program
- C_create(), C__destroy()
- C_set_destination()
- C_set_mode_name(), C_get_mode_name()
- C_set_locaLtraceJevel()
- C_show_error()
- C_xxxxx
■ AFTP subclass of CPIC_Program
- C_aftp_send_file(), aftp_receive_file()
- C_set_local_trace_level() << override
- C_aftp_xxxxx
■ APPC_Name_Server subclass of CPIC_Program
- C_aname_query(), aname_receive()
- C_aname_register()
- C_aname_xxxxx
(qeWOBparafcnira
What Are the Benefits?
Encapsulation
- Programmer's can't manipulate data structures directly
- Saves maintenance
Inheritance
- New programs (subclasses) inherit common code from
parent class
- Saves coding time
Polymorphism
- Each class may override some methods (printstring) but
programmers only learn one method name
- Saves programmer training time
w Strategies for Using APPC in
^ Object-Oriented Applications
<» Provide C++, Smalltalk classes for CPI-C (known as a
wrapper)
- Small amount of effort
- Great for existing APPC TPs
■ Conversational abstractions such as dialog or cpicobj
- Easier for ncn-APPG programmers to use
— Less control
~ Great for new TPs where server TP Is new
- Distributed objects
- Transparent to programmers
- Generally not interoperable
* Smalltalk-based visual application builder
■ APPC support
- APPC API classes
- APPCConnectionSpec object contains partner information
- APPCConversation object is handle to conversation
- Higher-level abstractions called dialogs
■ Supports "foreign" records (C, Cobol)
Important VisualAge APPC Classes
Hello, World’ in VisualAge
Object
AfotAPPCR©su!t answers false to isAbtError
AbtAPPCReception
AbtError
AbtCommunicationsError
AbtAPPCError answers true to isAbtError
AbtObservableObject
AbtPart
AbtAPPCConfiguration displays active SNA config
AbtCommunicationsConnection
AbtAPPCConvorsatson
AbtConnectionSpec
AbtAPPCCon noctionSpec
AbtTypeField
AbtRecord
AbtDialog
AbtMultiReceiveDialog
AbtMultiReceiveDialog initialize: anAbtRecorcj ls a one-line TP
(C) HM Corporate! 1S34 A X X-XWX"
mm
helloWorld
"Sample program - sends 'Hello, World!' to partner"
| connectionSpec conversation result |
“Define partner LU and TP name"
connectionSpec := AbtAPPCConnectionSpec new
fqPartnerLUName: 'USIBMNR.NR5183DI';
partnerTPName: 'HELLOD'.
"Initialize and allocate conversation"
conversation := AbtAPPCConversation new
connectUsing: connectionSpec.
"Send character string to remote system"
result := conversation sendString: 'Hello, world!'.
"terminate conversation and TP"
result := conversation disconnect.
w Strategies for Using APPC with Distributed
Logic
IBM System Object Model - SOM
Think of local object as a cache
- "Write-through" or "lazy-write" is design choice
- "Read-through" or "read-ahead"
Simplify conversion by converting data to character
strings where possible
For visual application tools, use record-mapping
objects
Interface Definition Language (1DL) and compiler
Language neutral objects
- "Client" object and "server" object can be in different
languages
- C and C++ today
- Other languages added easily (Cobol, OOCobol)
True object-oriented programming for procedural
languages
Client and server objects are local (same process)
(CJEWCcrpa^knim
SOM Interface Definition Language (SDL)
Compiler
C++ Car "Server" (APPC Client)
#ddine Car_Class_Source
#indude <carjtih>
SOWLScope void SOMLINK initFromVIN(
Car ‘'somSoif, Environment *ev, string vin)
{
CarData *somThis = GarGetData(somSetf);
CarMethodDofaufl( , 'Car i a initFromVIN B );
r si! the CPbC ©all# g© cmlnlt,
4 email©, ems*rad(vin), emrcrv(data),
* csitd@ei
* Received data has model, etc.
7
strm^Jv (model, date, 20);
r other string copies for initialization 7
Car object "server" program
(APPC client TP)
aCar object
C++ Car "Client"
tindude <car jch>
iirrt main(int argc, char *argvQ)
{
aCar = new Car;
aCar->in'rtFrornWlN(
somGetGlofoalEnvironmentO,
”DXY43JK1O09O n );
makeModel = aCar->_get_modelO;
aCar->somFr 0 eO;
return (0);
j #include <som.idt>
: interface Car: SOMObjed
j {
; void inrtFromVIN(in string vin);
I attribute string model;
Client program
aCar object
IDL
mm
(C) BW Corpcratan 1S54
k
w-
Using SOM Objects with APPC
« Same techniques as before - local object is cache for
remote data
« Get used to SOM compiler, IDL
» Get used to writing "server" programs as DLLs (OS/2)
or shared library (AIX)
Server
Distributed Objects - Software Industry View
■ Object Management Group
- Common Object Request Broker Architecture (CORBA)
“ RFP for interoperability
- RFP for Transaction Service
- IBM
- SOMObjects Toolkit
► Includes Distributed System Object Model (DSOM)
► CORBA-compliant
~ OS/2, AIX (10/93); Windows (ann. 5/94)
* Taligent (Apple, IBM, HP)
« Component Integration Lab
- Companies: Apple, IBM, Novell, Oracle, Sun, Taligent, WordPerfect,
Xerox
- Technologies: SOM, Bento (Apple object storage), Open Scripting
Architecture (Xerox), OpenDoc
* Both client and server use object-oriented model
■ Client treats remote objects as local (sort of like GIGS
function-shipping or RPC)
* ORB runtime performs communication calls
■ ORB runtime performs data conversion, or
"marshaling, unmarshaling"
Object-oriented principles can simplify writing APPC
programs
Distributing logic allows 0-0 programs to access
non-OO data
0-0 visual programming tools include powerful data
conversion tools in addition to APPC
Distributed objects have response times of other
distributed applications - beware
Ware®
SOM:
Re-usable Class Libraries
in Large Programs
Tom Pennell©
MetaWare Incorporated
2161 Delaware Avenue
Santa Cruz, CA 95060-5706
Phone: 408-429-6382
FAX: 408-429-9273
Client
Code
C, Pascal, C++,
Fortran, ASM...
EXTREME EXAMPLE:
OS/2 2.0 Runs 16-Bit OS/2 A
What Makes Procedure Li
Work?
Procedure Calling conventioi
Simple
How?
• External object representation is simple
and can be standardized
If You Don't (Have to) Change Your Source
Code, You Don't Have to Recompile!
Add function
DATA FUNCTIONS to A
A i j £ f2
B k g h
ap*=e-| I |
0
1
2
0 bp -> k = 23
2 mov eax, bp
mov 12 [eax!, 23
2
3
4 16
ap -> f (123) mov eax, ap
= a P "> CU (ap, 123) pash 123; push eax
mov ebx, 8 [eax]
call 4 [ebx]
bp -> h (456) mov eax, bp
= bp ->. wp [4] (bp, 456) pash 456; pash eax
mov ebx, 8 [eax]
call 16 [ebx]
DATA FUNCTIONS Add data to A,
A . . - function to 6
A i | J2 £
B k g g2 h
We added a function to A that B
didn't care about , and broke calls
to B'$ functions .
Broke calls to A and B!
MetaWare, Tom Pennello, Page 10
Conclusion:
• Typical C++ Object Model
3
© Tight Binary Coupling Between Class
Definition and Client Code
3
@ No Binary Compatibility
3
© Hindrance to Software Development
SOM -
© An Object Model Without This Coupling
(Achieved Via Indirection)
Let's See How...
DATA FUNCS
A i | £
B k g h
AMT A INFO
ap=^-
4
B MT B INFO
DOFF -
8
h
offset to data
in object
offset to f in
A MT
offset to data
offset to g in
B MT
offset to h in
B MT
• For each object, location 0 Points to MT
m MT = Method Table
— Contains all methods, whether introduced or derived
• Info Table
— Contains offset to introduced data in object
— Contains offset in MT for each introduced function
One
MT per
class
One
Into
Table
per class
Add functions => append to info table
Add data change offset in info table
Indirection buys binary isolation
add ecx, 12 [Binfo]
call [ecx]
MetaWare, Tom Pennello, Page 13
DATA FUNCTIONS Add function
A i | f £2
B k eh
A MT
ap -> f (123)
to
A INFO
iiill
in object
4 i offset to £ in
__ A MT
8 £2 offset to f2
in A MT
s
c
offset to f
A MX
MetaWare, Tom PenneSIo, Page 18
include <somobj.sc>
class:
Student:
"Student" class provides a base class to generate more
specialized students like "GraduateStudent" and
"UnderGraduateStudent"
parent:
SOMObject
data:
char id[16];
char name [32];
methods:
void setUpStudent(char *id, char *name);
-sets up new a new student.
void printStudentInfo ( );
-prints the student information.
char *getStudentType ( );
-returns the student type.
char *getStudentId( );
-returns the student id.
/* student id */
/* student id */
Figure 1. Class Definition File: <student.csc>
I MetaWare, Tom Pennello, Page 19
idefine Student_Class_Source
#include "'student. ih' e
static void setUpStudent(Student *somSelf, char *id, char *name
{
StudentData *somThis = StudentGetData(somSelf);
strcpy(_id, id);
strcpy(_name, name);
}
static void printStudentInfo(Student *somSelf)
{
StudentData
*somThis =
StudentGetData(somSelf);
printf ("
Id
: %s \n", _id);
printf("
Name
; %s \n", _name);
printf("
Type
i %s \n", _getStudentType(somSelf))
}
static char *getStudentType(Student *somSelf)
(
StudentData *somThis = StudentGetData(somSelf);
static char *type = "student";
return (type);
}
static char *getStudentId (Student *somSelf)
{
StudentData *somThis = StudentGetData(somSelf);
return (_id);
}
Figure 2. Class Method Implementation File: <student.c>
MetaWare, Tom Pennello, Page 20
student c esc This is the class definition file, as described
earlier.
student. sc This is a subset of the class definition file. It
includes all public information from the oC@c
file, including comments on public elements. For
the student example, student. sc would
include everything from student .esc except
the data section. This file is created by the SOM
compiler, and although human readable, should
not be edited, as it will be regenerated whenever
changes are made to the . esc file.
student „h This is a valid C header file which contains
macros necessary to invoke public methods and
access public data elements of the class. Tills file
will be included in any client of the class. This
file is created by the SOM compiler, and is
normally read only by programmers who need to
know how method resolution is implemented.
This file should not be edited.
student . ih Similar to student .h, but contains additional
information needed for implementing methods.
This is the implementor's version of the .h file,
and must be included in the class methods
implementation file. This file is created by the
SOM compiler and should not be edited.
student Contains the method implementations. This is
initially creeated by the SOM compiler and then
updated by the class implementor.
Table 1. Student Class Files
MetaWare, Tom Pennello, Page 21
include <student.sc>
class i
GraduateStudent;
parent:
Student
data;
char
char
methods;
override printStudentInfo;
override getStudentType;
void setUpGraduateStudent(
char *id, char *name, char *thesis, char *degree);
thesis[128j; /* thesis title */
degree[16]; /* graduate degree type */
Figure 4. Class Definition File:<graduate.csc>
MetaWare, Tom Pennello, Page 22
#define Graduatestudent_Class_Source
#include "graduate„ih"
static void printStudentInfo(GraduateStudent *somSelf)
{
GraduateStudentData *somThis = GraduateStudentGetData(somSelf)
parent_printStudentInfo(somSelf);
printf (" Thesis : %s \n", thesis);
printf(" Degree : %s \n"._degree);
}
static char *getStudentType(GraduateStudent *somSelf)
(
static char *type = "Graduate";
return (type);
}
static void setUpGraduateStudent(GraduateStudent *somSelf,
char *id # char *name, char *thesis, char ^degree)
{
GraduateStudentData *somThis = GraduateStudentGetData(somSelf)
_setUpStudent(somSelf,id,name);
strcpy (_thesis, thesis);
strcpy(_degree, degree);
)
Figure 5. Class Method Implementation File: <graduale.c>
MetaWare, Tom Pennello, Page 23
linclude "graduate.h"
main ()
{
Student *studentl = StudentNew();
Student *student2 = StudentNew();
GraduateStudent *gradl = GraduateStudentNew();
GraduateStudent *grad2 = GraduateStudentNew();
_setUpStudent(studentl,"120455","Joe Doe")/
_setUpStudent(student2,"103606","Mary Smith");
_setUpGraduateStudent (gradl,"203230","Janet Brown",
"Parser Generators", "M.S.”);
_setUpGraduateStudent (grad2,"240900","Mark Black",
"Code Optimization", "Ph.D.")
_printStudentInfo(studentl);
_jprint Student Info (student2) ;
_printStudentInfo(gradl);
_printStudentInfo(grad2);
}
MetaWare, Tom Pennello, Page 24
The output from this program is:
Id
: 120455
Name
: Joe Doe
Type
i student
Id
: 103606
Name
: Mary Smith
Type
: student
Id
: 203230
Name
: Janet Brown
Type
: Graduate
Thesis
: Parser Generators
Degree
: M.S.
Id
: 240900
Name
: Mark Black
Type
: Graduate
Thesis
: Code Optimization
Degree
: Ph.D.
allocation: a *&p = n©w a,-
— malice {siseof A);
it what is sizeof A ?
SOM object size varies as object implementation
vanes - binary independence means sizeof can't
be compiled into code.
MetaWare, Tom Pennetlo, Page 26
Every object is of some class.
Every class has a class-object holding data about the
class and having useful methods on the class.
Thus, classes are dynamic, run-time objects.
Examples of methods:
CLASSICS J ->
GETJNAME
( )
G E T_P ARENT [S]
C )
GETJSIZE
« )
SUPPORTS_METBOD
("foo")
NEW
« )
Dynamic type info:
ANY_OBJECT -> GET_CLASS { )
Returns class object for anyjobject
representing any_object's type.
printf ("type of obj is %s \n",
ANY__OBJECT ~> GET_CLASS ( ) -> GET NAME ( ) ) ;
I MetaWare, Tom Pennello, Page 28
Meta-Class Derivation SOM class
aob j -> gefc^class ( ) -> gefc__cnfc ( ) ) ;
I_!
Method added to meta-class
Because SOM classes are objects, you can extend
the functionality of classes (types) via derivation!
a -> construct ( ) ;
Implicitly, compiler rewrites
MetaWare, Tom Pennell©, Page 30
"But wait - C++ is so efficient!"
• Weigh cost of method call vs. work in
method.
© Use C++ for internal implementation of a
particular class.
© Few C++ compilers get this "efficient"
implementation right.
(VIRTUAL BASES AND CONSTRUCTORS)
SPACE -
• SOM: 4 bytes / object +MT, info, & class
object / type
© C++: 4 bytes / object - vfuncptr
+ (4 bytes / obi) x (virtual bases)
+ constructor displacement values
As soon as you have virtual functions, SOM is
no worse; when you have virtual bases, SOM
wins.
MetaWare, Tom Penneiio, Page 31
Frontiers of SOM
• Multiple Inheritance
• CORBAIDL
• More Bindings (C++, Pascal, CLOS, OREXX)
• Persistence Mix-in
• DirectToSOM Support for C++
MetaWare, Tom Penneiio, Page 32
Objects vs. RPCs
PenneMo, Page 34
A
BD,: 12CD,: 12
\ /
D
SI THIJNK:
CDj: mov eax, o [esp]
add eax, 12
ret
WRONG! -for a D
OS/2 Developer, Winter 1992
i m m&m nmz* rrraijtf i
OS/2 Developer^ Spring 1992
IBM’s OS/2 2.0 Technical Library
System Object Model Guide and Reference Version 2.0
4 *SOM Enchanted Evening”
Computer Language Supplement^ April 1993
e SOM in
UJ
char id[16], name[32];
pragma SOM_release_order(
student(char*,char*), printStudentlnfo,
getStudentType , getStudentId,
operator =);
};
MetaWare/Pennello//DirectToS0M 3 page 38
stu.hh, continued:
struct graduatestudent:student {
graduatestudent(char *id, char *name,
char *thesis, char *degree)
: student(id,name) {
strcpy(this->thesis,thesis) ;
strcpy(this->degree,degree) ;
}
graduatestudent(){} // For language bindings.
virtual void printStudentlnfo();
protected:
char thesis [128], degree[16] ;
pragma SOM_release_order(
graduatestudent(char*,char*,char*,char*) ,
operator =);
DirectToSOM C++ IMPLEMENTATION
(of those function bodies not inline)
stu.cpp:
#include "stu.hh"
void student::printStudentInfo() {
printf(" Id : %s \n",id);
printf(" Name : %s \n",name);
printf(" Type : %s \n",getStudentType());
}
void graduatestudent::printStudentlnfo() {
student::printStudentlnfo() ;
printf(" Thesis : %s \n",thesis);
printf(" Degree : %s \n",degree);
}
pragma pop(som_bindings)/ pragma pop(som_inline);
DirectToSOM C++ CLIENT
stut.cpp: // Test.
#include "atu.hh"
main () {
student studentl("120455","John Doe");
student student2("103606","Mary Smith");
graduatestudent gradl
("203230","Janet Brown",
"Parser Generators","M.S");
graduatestudent grad2
("240900","Mark Black",
"Code Optimization","Ph.D");
studentl.printStudentlnfo();
student2.printStudentInfo() ;
gradl.printStudentInfo() ;
grad2.printStudentlnfo() ;
}
MetaWare/Pennello//DirectToSOM, page 39
XDL OUTPUT FROM HC COMPILER
stu.id!:
#include <somobj*idl>
interface student : SOMObject {
void ct fpctl(inout somlnitCtrl ctrl,
inout char id,inout char name);
void printStudentlnfo() ;
char * getStudentType() ;
char * getStudentld{) ;
student * dts__as__frx7student
(in student dts_dummy 1) ;
#ifdef SOMIDL_
implementation {
char id[16];
char name[32];
callstyle—oidl ;
dtsclass;
majorversion = 0;
minorversion = 0;
somDefaultConstCopylnit: public, override, init,
cxxdecl="student(const student & dummy);";
ct___fpctl: public, init,
cxxdecl="student(char * id,char * name);";
printStudentlnfo: public,
cxxdecl="void printStudentlnfo(void);";
getStudentType: public,
cxxdecl="char * getStudentType(void);";
getStudentld: public,
cxxdecl="char * getStudentld(void);";
id: protected, align=l,
cxxdecl="char id[16];";
name: protected,
cxxdecl="char name [32 ] ; ;
dts_as_frxTstudent: public, nonstatic;
somDefaultConstAssign: public, override;
releaseorder : ct_fpctl, printStudentlnfo,
getStudentType, getStudentld,
dts_as_f rx7 student, id, name;
};
#endif
};
MetaWare/Pennello//DirectToSOM, page 40
IDL OUTPUT FROM HC COMPILER, cont'd.
stu„idl:
USE OF C LANGUAGE BINDINGS
interface graduat©student : student {
void ct_fpcn31(inout somlnitCtrl Ctrl,
inout char id,inout char name,
inout char thesis,inout char degree);
graduatestudent * dts as_frxlSgraduatestudent
(in graduatestudent dts___dummy2) ;
#ifde£ SOMJDh ~
implementation {
char thesis[128];
char degree[16];
callstyle=oidl;
dtsclass;
majorversion = 0;
minorversion = 0;
thesis: public,
cxxdecl="char thesis[128]; n ;
degree: public,
cxxdecl="char degree[16];";
somDefaultConstCopylnit: public, override, init,
cxxdecl="graduatestudent(const graduatestudent & du
ct fpcn31: public, init,
cxxdecl="graduatestudent(char * id,char * name,char *
printStudentlnfo: public, override,
cxxdecl="void printStudentlnfo(void);
dts__as frxlSgraduatestudent: public, nonstatic;
somDefaultConstAssign: public, override;
releaseorder : ct__fpcn31,
dts as_frxlSgraduatestudent,
thesis, degree;
};
#©ndif
};
stut2.c:
#include "stu.h"
main () {
student *studentl = studentNew{);
student *student2 = studentNew();
graduatestudent *gradl = graduatestudentNew ();
graduatestudent *grad2 = graduatestudentNew ();
_ct_fpctl(studentl,0,"120455","John Doe");
_ct_fpctl(student2,0,"103606","Mary Smith");
_ct_fpcn31(gradl, 0,
"203230", "Janet Brown",
"Parser Generators ","M.S");
_ct_fpcn31(grad2, 0,
"240900","Mark Black",
"Code Optimization","Ph.D");
_printStudentInfo(studentl) ;
_printStudentInfo(student2) ;
_jprint Student Info (gradl) ;
_j?rint Student Info (grad2) ;
}
USE OF C++ LANGUAGE BINDINGS
stut3o cpp:
#include "stu 0 xh"
main () {
student * student1 =
new student( ”120455" , "John Doe");
student *student2 =
new student("103606","Mary Smith");
graduatestudent *gradl = new graduatestudent
("203230", "Janet Brown",
"Parser Generators", "M„S");
graduatestudent *grad2 = new graduatestudent
("240900","Mark Black",
"Code Optimization","PhoD");
studentl-“>printStudentInf o () ;
student2“>printStudentInfo();
gradl“>printStudent!n£o() ;
grad2~>printStudentInfo() ;
}
MetaWare/Pennello//DirectToSOM, page 41
INVALID USE OF C++ LANGUAGE BINDINGS
(misuse undetected at compile-time)
stut4 o cpp:
// This program compiles but bombs with C++
// language bindings:
#include "stu.xh"
main () {
student studentl("120455","John Doe"); // 1
studentl*printStudentlnfo(); // 2
}
At // 1, an unwitting C++ compiler allocates just 4
bytes, not the appropriate amount of data.
So 1/2 bombs.
COMMANDS FOR DTS C++ AND BINDINGS
Implementor:
he stu.epp -c // Compile implementation
For bindings (optional):
he stu.h -Bidigen -Hcppext=h -c > stu.idl
sc ~sh -Einoqualifytypes -maddstar stu.idl
// C bindings: stu.h
sc -sxh -mnoqualifytypes -maddstar stu.idl
// C++ bindings: stu.xh
Clients:
DTS C++:
he stut.epp -c // Compile test C++ client
he stut stu “Bsom // Link with sonulib.
stut
// Produces output
MetaWare/Pennello/VDirectToSOM, page 42
COMMANDS FOR DTS C++ AND BINDINGS, contM.
C bindings:
he stut2.epp -c
he stut2 stu -Hsom
stut2
C++ bindings:
he stutB.cpp -c
he stut3 stu “Hsom
stut3
Remember:
// Compile C test program
// Link with som.lib.
// Produces (equivalent) output
// Compile C test program
// Link with som.lib,,
// Produces (equivalent) output
C++ language bindings
ARE NOT THE SAME AS
DirectToSOM C++.
SUBCLASSING THE WORKPLACE SHELL
PALETTE CLASS WITH DTS
#include <cs2.h>
#include <som.hh>
#include "wppalet.hh"
{{include "wpclrpal.hh"
// Class names are as they appear.
#pragma off(Case_insensitive_class_names);
// Don't generate your own asnop/ctor/dtor;
// inherit them from SOM.
{{pragma on (SOMOb ject_as signment_operators) ;
{{pragma on(SOMObject_constructors);
fpragma on(SOMObject_destructor);
// Force definition of the classes
// because there are no out-of-line methods:
{{pragma on(som_define_class)
MetaWare/Pennello//DirectToSOM, page 43
// Define palette MetaClass
class M__MyPalette : public M_WPColorPalette {
virtual ULONG wpclsQueryDefaultView() {
return OPEN_PALETTE;
}
virtual PSZ wpclsQuervTitle() {
return "Kevin's Palette";
I
virtual ULONG wpclsQueryStyle() {
return
// Call base class method in metaclass.
M WPColorPalette::wpclsQueryStyle()
| CLSSTYLE_NEVERTEMPLATE;
}
#pragma SOM_version(1,2);
1 ;
class MyPalette : public WPColorPalette {
ipragma SOM_metaclass(M_MyPalette);
#pragma SOM_version(1,2);
};
PALETTE.DEF
LIBRARY palette
EXPORTS
M_MyPaletteClassData ; Palette.OBJ
M_MyPaletteCClassData ; Palette.OBJ
MyPaletteClassData ; Palette.OBJ
MyPaletteCClassData ; Palette.OBJ
MyPaletteNewClass ; Palette.OBJ
M_MyPaletteNewClass ; Palette.OBJ
(automatically generated; these are the names
exported from palette.obj)
MetaWare/Pennello//DirectToSOM, page 44
KEXX SCRIPT TO REGISTER CLASS ON THE DESKTOP
palette.cmd:
call RxFuncAdd "SysLoadFuncs","RexxUtil",
"SysLoadFuncs"
call SysLoadFuncs
/* class, module */
if SysRegisterObjectClass( "MyPalette" ,
"palette" );
then say 'Class registered.'
else
say 'Class registion failed.'
class = "MyPalette"
title = "My Palette"
location = "<WP__DESKTOP>"
setup = "OBJECTID=<MYFOLD>"
replace = 'REPLACE'
rc = SysCreateObject( class, title,
location, setup, replace );
if rc then
say "Object Created"
else
do
say rc;
call SysDeregisterObjectClass( "MyPalette" );
say "Class deregistered"
end
REXX SCRIPT TO DEREGISTER CLASS ON THE DESKTOP
dpalette.cmd:
call RxFuncAdd "SysLoadFuncs",
"RexxUtil","SysLoadFuncs"
call SysLoadFuncs
class = "MyPalette"
title = "My Palette"
location = "<WP_DESKTOP>"
setup = "OBJECTID=<MYFOLD>"
replace = 'REPLACE'
do
call SysDeregisterObjectClass( "MyPalette" );
say "Class deregistered"
end
COMMANDS FOR TESTING PALETTE
he -c palette„cpp // Compile new class.
he -HIdopt—/stack:16384 -Hsom -Hdll -Hdef palette.obj
// Link, produce DLL.
copy palette.dll ..\libtest
// Put DLL someplace
// in your LIBPATH
palette // Register class
// on the desktop
< NOW USE THE PALETTE! ! ! >
dpalette // Deregister class,.
// (then delete the object
// with the mouse)
MetaWare/Pennello//DirectToSOM, page 45
Where DirectToSOM C++ differs from C++
- sizeof(expression) or sizeof(type) not a constant
- No { initializers }:
struct s : SOMObject { int x; };
s x = {1}; // Error *
~ NO MULTIPLE OCCURRENCES OF THE SAME NON-VIRTUAL
BASE (all bases in SOM are virtual):
A A
I I
B C // Compiler generates
\ / // warning.
D
You really wrote:
A
/ \
B C
\ /
D
- obj„x = obj D y = 1 fails if x and y are attributes
SURPRISES
~ Calls to new/delete:
somtype x; // If global, calls new
struct cpp class {
somtype x; // cpp^class ctor calls new
>;
- Non-link time constants:
struct somtype {
protected:
int member;
} ;
// Generates RT code:
int somtype: : *memptr = &somtype: :member;
- All static data and static member functions must be
defined, ©van if never called.
MetaWare/PenneXlo//DirectToSOM, page 46
Release-to-release binary compatibility (RKBC)
New releases of binary class libraries:
- Must support prior interfaces & semantics
- May offer additional features and improved
performance
You can add: You can delete:
member functions, private member
constructors, destructors functions
member data private member data
base classes
private base classes
You can change:
member function from non-virtual to virtual
MetaWare/Pennello//DirectToSOM, page 47
Mechanics:
- add new functions,- constructors,- destructors
to end of SOM^release^order.
- add new data to END of public/protected sections
- do anything you want with private data!
Issues:
- support inlining/macros forever
struct s { void £() { g () ; h () ; } };
#define STUFF (x) x.f ()
Changing the inline functions/macros doesn't
affect old pgms!
- templates - glorified macros
- overloading -- a new "more-specific" operator won't
be called by old code until recompiled:
struct s {
void f(float);
void f(int);
>;
// Client:
... f(2.3)
// f(float) called
struct s {
void f(float);
void f(double);
void f(int);
} ;
// Client:
. . . f(2.3)
// f(double) called
// WHEN RECOMPILED
Unrecompiled clients call old versions
— is this OK for your class?
Summary: make disciplined use of C++ features!
Plan for future RRBC!
No change propagates to old binaries
MetaWare/Pennello//DirectToSOM, page 48
Some PRAGMAS/TOGGLES
Some PRAGMAS/TOGGLES, cont'd
// Say that the following classes are SOM:
pragma On(SOM_bindings);
pragma Pop(SOMJbindings); // Back to previous.
// Specify the ordering of your methods:
pragma SOM_release_order(list of functions);
// Do not mangle method/data names :
pragma SomNoMangling(On); // No mangling
pragma SomNoMangling (Pop) ;
// Compiler prints your release order!
pragma on(print^som);
// Don't inline SOM methods
pragma off(sonajLnline);
// Specify data attributes for data access
// (__get_x and __set_x methods)
pragma SOM^attribute(xl, ... xn)
pragma SOM_attribute(xl, ... xn;
ml , m2, c o. mk)
// Version control/checking:
pragma SOM_version (major, minor)
pragma SOM^version(classname; major,minor)
// Specify a metaclass:
pragma SOMjnetaclass(this,that);
pragma SOM_metaclass(that);
// IDL callstyle gets you
// an "environment" parameter:
pragma SOM_callstyle(this,IDL); // or OIDL.
pragma SOM_callstyle(IDL); // or OIDL.
// Inherit default constructor, destructor,
// and assignment from SOMObject, to save code,
// or for use in WPS (legacy classes):
pragma on (SOMOb ject__assignment_operators) ;
pragma on(SOMObject_constructors);
pragma on(SOMObject^destructor);
// Force definition of this class if it has no
// "seat" the compiler can identify to lay down
// NewClass:
pragma on(som define class);
LIMITATIONS IN C++ LANGUAGE BINDINGS
(non-DirectToSOM)
YOU CANNOT:
- somtypa x; // Use new«
- somtypa a[10]; // new somtype[10] doesn't
// work either.
- x.member; // No direct member access.
// DTS allows AND OPTIMIZES
- void f(somtype); // No passing by value
- somtype g(); //No return by value
- Hava objects as members of classes
- Write operator new/delete.
YOU MUST
- Understand and use IDL to describe classes
MetaWare/Pennello//DirectToS0M 5 page 49
Microsoft Component Object Model (COM)
- An object is the sum of its interfaces
- Object-based, not object-oriented
=> no implementation inheritance
+-+
j *-j-> vPrint
+—---~+
j *-| ——> vGraph
+-—+
| *--j-—> vDump
+--•-+
S data I
| for object j
-j-•—}-
Virtual function table
+- j-
vPrint: j addref | first
+—..-+ three
1 release | entries
4 - .j. "inherited" from
I queryI | IUnknown
+--f
j spool I methods for
+-+ interface
I unspool | Print
+ - +
I ... I
+-+
oPrint:
©Graph:
oDump:
vGraph, vDump similar.
MetaWare/Pennello//SOM vs. COM, page 50
- usage: Ask about an interface;
if supported, call method in it.
IUnknown *p = ... get an object from
somewhere ...;
Print *oPrint;
p->QueryInterface(IPrint,fioPrint);
if (oPrint != 0)
IS Object supports Print interface.
oPrint->spool ();
Graph *oGraph;
p->QueryInterface(IGraph,fioGraph);
if (oGraph != 0)
oGraph->draw();
- No direct access to data
- Object representation quite simple
Inheritance?
Existing: Student type
I want: GraduateStudent type
GraduateStudent
+—--
oGS : 1 *-•-• I-> vStudent^G
+--■--+
i *-1—+
+—--+ i
1 data | |
| for grad | j
+-+ I
V
vStudentjG: Student
+-f HI---+
| 3 | | *-j->vStudent
| standards j +-+
+-h | data |
1 | ! for sdnt j
4 -—-}*
| getType j->void GraduateStudent::getType()
+---+ { return "grad"; }
| print |-M-
+-+ I
V
•void GraduateStudent:: print () {
this->oStudent->print() ;
print my own stuff;
}
MetaWare/Pennello//SOM vs. COM, page 51
- Embed a (data pointer to a) student
- Implement a separate Student method table with a
replacement for print.
- But this DOESN'T WORK RIGHT!
void studentprint() {
printf(" Id : %s \n",id);
printf(" Name : %s \n",name);
printf(" Type : %s \n",getStudentType());
} I I I I I I I I I I I I I I I
// Always prints "student", never "grad".
Basic problem: methods in base classes don't
"call up".
This is NOT INHERITANCE. This is "front-ending".
How to do inheritance? Complicated, plus Student
must be programmed specially to allow it.
- Add a new method? writ© a new interface.
- Use of different interfaces requires maintenance of
different pointer values.
MetaWare/Pennello//SOM vs. COM, page 52
Microsoft's point of view:
- Small objects: use implementation inheritance, see
all source coda.
- Large objects: interact as "components", not in an
QO fashion.
So: OO is not appropriate for component
communication, only for programming-in-the-small.
- OLE: a collection of 60+ COM interfaces:
a component connection framework.
SOM vs. COM, as seen by IBM
(Reprinted with permission of IBM)
(See the System Object Model and the Component Object
Model: A comparison of technologies from a developer’s
perspective; IBM Object Technology Products Group in
Austin)
"Object model"
COM: A set of rules that must be implemented in every
application, coupled with system calls for object
instantiation, ...
SOM: A syntax free OO runtime that can be used to implement an
object-oriented programming language
Programming methodology
COM: Object-based
SOM: Object-oriented
Relationship to languages
COM: Language-neutral
Objects may be written in C or C++
C++ objects require user-written additions to become COM
objects
SOM: Language-neutral
Objects may be written in C or C++ (bindings)
C++ objects = SOM objects (using DTS C++ compilers)
MetaWare/Pennello//SOM vs. COM, page
COM's object model does not match any OOPL, and cannot be used
as an OOP runtime engine by compilers. SOM can be used as a
common binary runtime engine for C++ compilers and other
OOPLs.
Static Typing
COM: Individual interfaces are statically typed, not objects.
SOM: Objects statically typed via the class hierarchy
Static typing permits the language compiler to prevent type
mismatch errors from showing up at runtime. Lack of static
typing introduces more runtime failure modes. COM objects
require runtime operations to ascertain which interfaces are
supported by an object.
Method Resolution Mechanisms
COM: User responsibility, requires 2 steps:
1. Use Querylnterface or instantiation to get Interface
2. Indirect function call via interface vector table
(polymorphism essentially handled by user-written
code)
No user intercept capability
Granularity of polymorphism: interface
SOM: 3 Forms (offset, name, dispatch)
User intercept capability for all three (via somDispatch)
Granularity of polymorphism: (interface, method,
arbitrary)
Except for instantiation no COM code is involved in interface
selection or function invocation. In this area COM is only a
set of rules, all code involved in interface selection or
function invocation is user-written. SOM performs method
resolution (ie, interface selection and function invocation)
completely automatically, without user-written code. SOM user
may, however, optionally elect to participate in method
resolution by overriding the somDispatch mechanism.
Inheritance
COM: No implementation-inheritance
Implementation inheritance considered bad due to possible
lack of synchronization via base and derived classes.
New technique called aggregration offerred to offset loss
of inheritance.
IUnknown interface frozen since it must be embedded
within all other interfaces.
SOM: Single/Multiple
Synchronization of base and derived classes handled
automatically during class construction.
SOM has several mechanisms such as somlsA, etc. which
be used to simulate aggregation
MetaWare/Pennello//SOM vs. COM, page 54
Aggregation is essentially a manual technique entirely
implemented by user-written code (COM is not involved in
aggregration; it simply provides rules about what users must
write). On the other hand, SOM's implementation inheritance
is automatic and not subject to the "base/derived" class
problem since (in general) only the base class's public
interface is available to the derived class. In addition, lack
of inheritance at the COM level means implementors must cope
with 2 different object models, one for components, and a
different one at the implementation language level (since no
language offers aggregation).
Functional composition mechanisms
COM: Containment (or Delegation (user-written))
Aggregation, but all objects not required to support it.
Behavior changes by front-ending with new code
SOM: Containment (or Delegation (user-written))
Inheritance
Metaclass selection
Derived metaclasses based on multiple inheritance
Behavior changes by overriding methods
COM capabilities require user discipline and adherence to
protocol conventions, SOM mechanisms are richer and more
automatic. Some functions cannot be augmented via COM's
front-ending technique since methods internally invoked within
an implementation do not interact with the front-end.
Aggregation is just an optimized form of containment, allowing
a user to forego the writing of the delegation code.
Versioning
COM: User-written versioning using major & minor numbers
Method implementation refactoring, changes in inheritance
tree, or object size not visible thru COM. Additions may
NOT be made to interfaces. Old interfaces must be kept
and a new interface that include all the old methods
along with the newly added methods must be created.
SOM: Automatic base/derived class version checking using major
& minor numbers
Optional User-written versioning using major & minor numbers
Evolution of classes permits refactoring methods,
additions to inheritance tree, changes in object size,
additions to interfaces.
Dramatic difference in philosophy between SOM and COM here;
SOM permits interfaces to evolve over time without breaking
client programs, but COM requires proliferation of new
interfaces while retaining all old interfaces. Also, in SOM
versioning is essentially automatic, while a user
responsibility in COM.
Cross-process
COM: Automatic marshalling for Microsoft-provided
COM & OLE interfaces
User supplied marshalling for custom interfaces
Distributed support in Cairo 1995
SOM: Automatic marshalling for IDL interfaces via DSOM
Hooks for user-written marshalling via somDispatch
MetaWare/Pennello//SOM vs. COM, page 55
Complexity
COM: 1 object reference needed for each object interface
All objects must be reference counted.
Aggregation requires user-written code to implement
All classes and interfaces must have a globally-unique
persistent Id
interface implementations must be specially coded to
permit subsequent aggregation
SOM: 1 object reference needed per object
Reference counting may be used when desired
& can be automated using metaclass programming
Inheritance is statically declared.
Local Classes and interfaces do not require
globally-unique persistent Ids.
DSOM makes use of UUlDs.
No special coding required to permit subsequent
implementation inheritance
Standards
COM: Invented by Microsoft, not part of any standard
Aggregation is not part of any development language
Available on Windows platforms, Mac System 7
SOM: Invented by IBM, but built on the OMG CORBA standard
Inheritance is built into all OOP development languages
Uses IDL - OMG’s Interface Description Language
Direct-to-SOM C++ Compiler products map ANSI C++ language
directly and transparently into SOM
Available on Windows, OS/2, & AIX, HP (future), SUN
(future), Mac System 7 (future), Taligent
(future), WPOS (future)
Incorporation of standards assures that widespread user
requirements are being addressed and that compatible APIs and
products may appear across a broad range of industry
platforms.
Unique heatures:
COM:
SOM: Dynamic class construction
Derived metaclasses
Name Lookup & dispatch method resolution
Single, multiple, & abstract inheritance
Implementation detail not exposed via inheritance
Automatic generation of proxies via DSOM
Class shadowing
Automatic base/derived class version checking
Typed or untyped object references
Hooks for user written method resolution or runtime
type checking
OS/2 update in 1994—
& Product Ok?jectives
® Performance
• Usability and Function
OS/2 for SMP
Beyond 1994
© Emerging technologies
* Managing the enterprise
network
w « OS/2 for PowerPC
Conclusions
Questions ?
OS/2 Tecnmcal Update, Atlana, 11 m SepB'
Trademarks
The following terms are trademarks of the IBM Corporation
• IBM
. OS/2
® Operating System/2
e Presentation Manager
o WIN-OS2
o Workplace Shell
» PowerPC
The following terms are trademarks of their respective companies
o LaserJet, DeskJet
o Postscript
o Windows
® Microsoft
e Intel
8 Lexmark
o Hewlett-Packard
o Epson
o Panasonic
® Tricord
8 Compaq
s Wyse
Copyright ©IBM Corporation, 1994, All rights reserved
> Copyrigm(P IBM Corporation, 1994, All rights ^eservea_OS/2 Tacnmcai Update, Atlanta, -»Hn September 1994,
OS/2 2.99
■ A. for Windows' product
- Enhanced to support Windows 3.11
Windows for Workgroups 3.11,
and Win32s
- Does not require Windows
- Ongoing assessment of customer requests and
needs for future support
a Fall release
- 2nd Beta test underway now
3 Focus on:
- Performance
- Usability and Installation
- Device support
- Stability and Reliability
^Copyright O IBM Corporation, 1994. All rignts 'esarved_ OS/2 Technical Update. Atlanta, 11 th September 1994 /
Performance
■ Workplace Shelf
- Tuned for end-user responsiveness
- Much 'snappier' feel
- Exploit multiple threading
a Asynchronous application start-up
■ Improved algorithms In key system areas
- Memory management
- Swapper
- Loader, etc.
- For faster boot times
vCopyright ©IBM Corporation. 1994, All rights 'esarvea
OS/2 Technical Uodate. Atlanta, Hth S
Performance
Improve overall user responsiveness and
reduce the amount of system resources used
■ More 32-bit code
- PMW1N
- Controls
- Optimized for Intel
- Tuned for end-user performance
■ Merge Presentation Manager DLLs
- Heavily page tuned for optimum memory usage
\CopyrighHP IBM Corporation. 1994, All rights reserved
OS/2 Technical UodaB, Atlanta, 11th SeDtember 1994/
Performance Technology
* New linker and loader
- Better EXEPACK
- Faster loading and execution of binaries linked
with new linker
■ Using latest version of IBM C/Set++ compiler
- Code optimized for Intel 486 processor
- Used C/Set++ code path analysis tools to better
page tune executable code
^Copyrights IBM Corporation. 1994. All ngnts
OS/2 Technical Update, Atlanta, Hth September 1994,
Performance Technology
■ A 'performance' version of OS/2 Kernel
- Selectively installed
- Excludes trace, debug and performance monitors
- Easy to switch between full and performance kernel
* New CONFIG.SYS defaults for performance
- Based on system hardware configuration
OS/2 Tecinica! Uoaaie, Atlanta, i
Performance Expectations
All figures approximate!
■ Significantly faster boot times
- Up to 50% depending upon configuration
- Saves battery life in notebooks
■ Applications scenario execution
- 50% or better improvement to run typical scenario
in constrained memory environments
« Our tests are run on 4 MByte systems
- Typically 20% faster in unconstrained memory
environments
• 8 MBytes or more
■ User Interface much snappier
J8opyrigntOIBM Corporation, 1994, Ail rights >ese |, veo _OS/2 Technical Upoas, ACanta, 11th Septemoer 1994,
System Install
Make OS/2 easier to install, learn and use
■ 1st phase installs enough to make a workable
system
- Disk preparation
- Video selection
■ 2nd phase uses selective install system utility
to let you configure 'optional' system
components
- Workplace Shell is active
■ Chances ©f Installation failure significantly
reduced.
\CopyngntO IBM Corporation. 1994, All nghts
System install
Improved user Interface and flexibility
■ Integrated SVGA display driver install
- Much wider selection of adapters
■ May install multiple printer drivers
■ integrated Multimedia install
- Sound cards
- CD-ROM support pH
■ Utilities for laptops Ip!
- PCMCIA and APM ^
^Copyright <D IBM Corporation, >994, All rights reserved
OS/2 Technical Update, Atlanta, 11th September 1994/
Printer Drivers
■ Leading Printer Support
- PostScript
- Hewlett Packard
- Lexmark 4S|g|g
- Epson
- Panasonic
■ improve network printing
- Install printer driver from server
■ Working closely with OEM ,
suppliers to ensure OS/2 \
support for printers
CJWUwi
\Copyhght ©IBM Corporation, 1994, All right
OS/2 TecnmcaJ Update, Atlanta, ^th September 11
Graphics Drivers
Many more SVGA accelerator chips
supported
- S3 enhancements, 801/805,928, 864 ...
- ATI Mach32, Mach64 ...
- Tseng ET4000, W32P, W32I...
- Weitek P9000 ...
- Western Digital C24, C26, C27, C31, C33, C34 ...
- Cirrus Logic 5426, 5428, 5430 ...
Working closely with OEM suppliers to
ensure OS/2 support for chip
mr 1 sets
W OS&LXmse \
Jr )
\Copynght© IBM Corporation, 1994, All rights reserved
OS/2 Technical Update, Atlanta, 1
CD-ROM & Disk Device Support
Enhanced CD-ROM Support
■ Many more drives supported
* Proprietary interfaces
- Mitsumi, Panasonic, Sony
■ IDE controller interface
■ Enhanced SCSI support
- SCSI-2
■ Additional SCSI drivers
- Compaq, Panasonic, PAS, Sony
\Copynght©lBM Corporation, 1994, All nghts rose
OS/2 Technical Update, Atlanta, nth September 1994/
Portable Computing
OS/2 includes PCMCIA device drivers
a Socket services for IBM and OEM systems
- IBM, NEC, AST, Toshiba,
Gateway and more
- Supports all three major socket services chip-sets
■ PlayAtWil! auto-configurator card support
- Supports all major PCMCIA peripherals including
modems, communications, memory, disk drives,
etc. m
a Workplace Shell Drives object Iff
enhanced to recognize PCMCIA I
hard disks, flash memory and
static RAM
’SvSSSk,.
\Copyright (PIBM Corporation, 1994, Ail rights 'eserved
OS/2 Technical Update, Atlanta, 1 - th September 1!
Workplace Shell
Front Panel
a Fast access to frequently used objects
- Lockup, Shutdown,
Command prompts, Printers, etc.
• You can customize contents ...
- Add/remove objects
- Tear-off pull-up menus
■ And modify appearance ...
- Horizontal or vertical ^ mmma «hm
- Large or small icons ipasg w
- Float on top feature Ilil HH i_1 L
- With or without titlebar
jn, 1994, Ail rignts reserved
OS/2 Technical Updaie, Atlanta, lltn September 1994/
Workplace Shelf
■ Uses SOM2, is a DSOM server
■ Many new APIs for application developers
«« Enhancements to user interface
- Lazy drag
- Open parent folder
- Comet cursor
- Auto-close folders
- Color palettes
- Icon text color
- Background bitmaps, use of palette management
- You can edit system pointers
- Enhanced Find, Sort, Include settings
- And more ...
^Copyright Q IBM Corporation, 1994, All ogfrts reserved_OS/2 Technical Updae, Atlanla, 1 itn Septemoer 1994,
Stability and Diagnostics
■ Many customer-reported problems fixed
throughout system
■ You can activate enhanced error recovery
tools
- Workplace Shell archive and restore
- CONFIG.SYS processing status indication
- 'Escape' from initial boot sequence... so you can
perform repairs!
OS/2 for SMP
* Consistent with industry standard
Multiprocessor Specification 1.1
* Total system solution
- LAN Server 3.0, DB/2, CM/2
- Available from hardware suppliers
■ Single OS/2 for SMP package supports all
SMP machines
- Device drivers for hardware dependent layer
■ Device drivers for following machines
provided in initial release
. ALR AST
Compaq Hewlett-Packard
Sote§ Tricord
Vtech Wyse
> Copynght(PIBM Corporation, 1994, Ai' ngn^s reserved
OS/2 TecnmcaJ Upqata, Atlanta, ^iih Sepamper *994,
OS/2 for SMP
« OS/2 for Symmetric Multiprocessing §g|
- Available now mum W
- Based on OS/2 2.11 |||||| jpg
■ Designed to scale well on .
additional processors fjpil
- 16 Processor optimum design point
■ Transparent to end User
- Multithread applications naturally exploit multiple
processors
- OS/2 kernel dispatches work transparently
■ Excellent performance improvements
- ideal for server/database applications i pilf
yCopyrigmOIBM Corporation, 1994, All fights re
OS/2 Technical Update, Atlanta, 11th September 1
_ >
Emerging Technology Support
OPENDOC support
■ Compound document architecture
- Supports imbedded text, sound, video, etc.
■ Network ready through SOM Objects
■ inter-operability
■ Alpha available today... Beta later in 1994.
Enterprise Focus
Position OS/2 as client/server solution
■ Security enabling
- User option
- C2 level security with vendor add-ons
- Built-in desktop security
• Shell restrictions
• Multiple private desktops
■ Improved network management
and diagnostics
\Copyngm IBM Corporation. 1994, All ngnts ^served
OS/? Technical Update, Atlanta, nth September 1994/
Systems Management
■ System Management
- FFST (First Failure System Technology)
- Unattended operations
- Vital product data
- Error logging
- Process level dump and dump
formatting
- Improved CID support
- Software license management
\»
\Gopy fight O IBM Corporation. 1994, AH -ights fa served____ OS/2 Technical Update. Atlanta, 11 th September "994 /
OS/2 for PowerPC
■ Provide OS/2 support on PReP compatible
PowerPC systems
■ Re-compile 32-bit OS/2 applications for
PowerPC
■ Binary compatibility for 16-bit DOS and
Windows applications
- Using a high-performance Instruction Set
Translator (1ST)
0 Supports OS/2 applications
- With many under-lying technology enhancements
\CopyrigntOIBM Corporation, 1994, All r »ghts '•eserved_OS/2 Technical Update, Atiama, 1 ith September 1994 )
OS/2 for PowerPC
■ An OS/2 Personality
- built on top of the IBM Microkernel and Workplace
OS technology
- Supports OS/2 32-bit 'DosXxx' APIs
- Portable to other processor platforms
\Copynght <P IBM Corporation, 1994, Ail rights reserved__ OS/2 Tecnnical Update, Atlanta, Sep temper 1994 /
Workplace OS Technology
Common components across platforms
•OS/2- $2 Bk AP? s* Tangent Frameworks, OpenDoc |
' Personalities PNS Device drivers
j iRtet ~j ' j~ Pwt*tP$ "] Intel /Other... 1
Common Desktop
Look and Feel
Common Application
Programming interface
Common Device Driver
New Mode! Supporting
Multiple Architectures
Copyright O IBM Corporation, 1994, All ngnts -8served
OS/2 Technical Update, Atlanta, 1 1 1 1 Septer
OS/2 for PowerPC
» Add file system, Presentation Manager and
other components to complete the system
WPS
OS/2
OS/2
Add \
App l
i _ mm®®:
. ’ .P
i
\CapynghKPIBM Corporation. 1994, All ngnts reserved
OS/2 Technical UpdaB, Atlanta, Vtn September 1994/
PSP Development Team Goals
Customer Satisfaction $
» Focus on low-end systems
- Performance ^csjj
- Usability J WT^m
m Accelerate support of Industry Jgf
standard hardware and peripherals.
■ Continue to provide world-class application
support
■ Be a leader In emerging technologies
■ Enable application portability
\Copyngmg>tBM Corporation, 1994, All nghg reserved
OS/2 Technical Update. Atlanta, 11 th September 1994/
Summary
■ Continuing investment in OS/2
' By !BM
- By software developers . BV/
- By customers
■ Many enhancements planned “^||!|P r
- Performance, function and technology
■ Investment in OS/2 today is secure for the
future
- Portable to OS/2 for PowerPC
- Workplace technology
V^Copyr.ght ® IBM Corporation, 1994, All rights reserved
OS/2 Technical Update, Atlanta, 11 fo September 1994/
OS/2 is not dead!
■ New versions of OS/2 in 1994
-OS/2 for SMP2.11
- OS/2 update ’real soon now’
■ Continuing investment In the future
- An OS/2 update in 1995
- OS/2 for PowerPC
■ Large investment by IBM in the Workplace
operating system technology
- To protect existing OS/2 investments
- To provide the greatest level of application
compatibility and portability
^CopyrigmoiBMCoroorat'On. 1994, All rights reserves _OS/2 Technical UpdaB, Aflania. nth September 1994,
ZQSO
OS/2 And Windows
Kogan Associates, Inc*
Computer Consulting & Education Services
What Corporate Users Want
» To Minimize The Costs Of Delivering Solutions To
Corporate CSients/Users
» Connectivity To Distributed Resources/Workgroup
Computing Solutions
- Distributed Network Administration/Management
® Security
s Multivendor
- Flexibility
- Cost
« Clear Migration Path
Copyright €>1994 Kogan Associates, Inc.
What Users Want
■ To Use Computers To Make Them More Productive
» Software
- Applications
- Friendly, Easy To Use
- Ability To Do More Than One Thing At A Time
* Hardware
- Power To Run Applications (Fast)
- Most Value/Power For The Money
» Operating System Environment
- Gives The User The Most Flexibility Choosing
Applications Software And Hardware Systems
Copyright © 1994 Kogan Associates, Inc.
Implications Of User Wants For
Operating Systems
. Provide The Ability T© Run Existing Applications
- Run On Existing Hardware Platforms
• Allow Users To Run Multiple Applications
Concurrently
- System Must Implement Policies T© Guarantee
Integrity/Reliability Of Multitasking Environment
- Applications Are Not Perfect
- System Must Be Able To Tolerate Problems
- No More "Save Early And Often" Mentality
- System Must Control Multitasking, Not Applications
■ Protection
- System Must Be Protected From Applications
- Applications Must Be Protected From Each Other
Copyright ©1994 Kogan Associates, Inc.
What Software Developers Want
■ Make Money Selling Software Solutions
■ Requires Platform Capable Of Supporting
Applications With Sufficient Volumes To Enable Profit
■ Tools To Support Efficient Application Development
a Spend Development Effort On Distinguishing
Application Function instead Of Chasing APIs
« Enable Application Across Platforms
H Preserve investment In Source Code
Copyright © 1994 Kogan Associates, Inc.
32-Bit Client Platform
■ Run On Most 386/486 Systems
« Run Existing DOS And Wfn16 Apps
■ Preemptively Multitask Old And Mew Applications
a Provide System And Application Protection
■ Enable Portable 32-Bit Applications
a Obj@ct»©ri@tned Graphical User interface
Copyright © 1994 Kogan Associates, Inc.
Implications Of Software Developer Wants For
Operating Systems
« OS Installed Base To Support Application Sales
■ Powerful Tools For Development
® Portable Application Programming Interfaces
Copyright ©1994 Kogan Associates, Inc.
32-Bit Server Platform
* interoperate With Everything
- BOS, OS/2 3 UNIX, Mainframe OS
- Novell, Banyan, LAMManager, LAMServer, AppleTalk
- NETBIOS, SMB, TCP/IP, SNA, OSI, SPX/IPX
» File And Print Sharing
■ Distributed Applications
* Network Management
- Configuration, Distribution, Installation Tools
- Remote Installation And Update
- Remote Administration
■ Security
■ Multiprocessor Support For Application Servers
Copyright ©1994 Kogan Associates, Inc.
OS/2 And Windows
- Current Systems
- Windows 3.X (>40M)
- OS/2 2.X (>5M)
- Windows NT 3.1 (<1M)
= Future Systems
- ChIcago/WI ndows 4.0 (Beta 2QS4)
- OS/2 2.2 (Beta 2Q94)
- Daytona/Windows NT 3.5 (Beta 2Q94)
- Power OS/2 (Beta 2H94)
Compare And Contrast
- Hardware Requirements
- Architectures
- DOS Compatibility
* Windows 3.X Compatibility
= 32-Bit Applications
- Strategy And Positioning
■ Migration Issues
- Challenges
a Predictions & Projections
Copyright ©1994 Kogan Associates, Inc.
Copyright © 1994 Kogan Associates, Inc.
Hardware Requirements
Windows 3.1
(Enhanced)
OS/2 2.1
Windows NT 3.1
Processor
- Required
16Mhz
16MHz
25MHz
386SX
386SX
486DX
- Recommended
20MHz
25MHz
66MHz
Memory
486SX
486SX
486DX2-RISC
- Required
2MB
4MB
12MB
- Recommended
4MB
8MB
16MB
Disk
30MB
50MB
80MB
Hardware Requirements
Windows 4.0
OS/2 2.2
Windows NT 3.5
Power OS/2
Processor
- Required
16Mhz
16MHz
25MHz
25MHz
386SX
386SX
486DX-R1SG
486DX-RISC
- Recommended
25MHz
25MHz
66MHz
66MHz
Memory
486SX
486SX
486DX2-R8SG
486DX2-R8SC
- Required
4MB
4MB
SMB
SMB
- Recommended
SMB
4MB
12MB
12-16MB
Disk
50MB
50MB
80MB
80MB
N.N. - Windows NT & Power OS/2 Add 4-8MB RAM On RISC
Copyright ©1994 Kogan Associates, Inc.
Copyright © 1994 Kogan Associates, Inc.
Windows 3.1 With Win32s
Windows NT 3.1
_ NT Executive _
_ Executive Services
Device Drivers | Hardware Abstraction
_ Machine Dependent Code
Kernel
OS/2 2=1
Copyright © 1994 Kogan Associates, fnc.
System Capabilities
Windows 3.1
(Enhanced)
OS/2 2.1
Windows NT 3.
System Technology
DOS
Monolithic
Layered
Multitasking
Extender
Monitor
Microkernel
- DOS
Preemptive
Preemptive
Preemptive
- Win16
Cooperative
Preemptive
Cooperative
- 32-Bit
Compatibility
Cooperative
Preemptive
Preemptive
- DOS
Full
Full
Partial
- Win16
Full
Most
Partial
- Device Drivers
Yes
Most
No
User Interface
Program &
Workplace
Program & File
File Mngrs
Shell Mngrs
"Copyright © 1994 Kogan Associates, Inc.
System Capabilities
Windows 3.1 OS/2 2.1 Windows NT 3.1
(Enhanced)
> Protection
No
Yes
Yes
= Security
Add On
Add On
integrated
■ Symmetric
Multiprocessing
No
No
Yes
s Portability
- Application
Win32s
OS/2 32-Bit
UtlinQO
- System
No
No
Yes
■ File Systems
FAT
FAT/HPFS
FAT/HPFS/NTFS
Copyright © 1994 Kogan Associates, Inc.
DOS Compatibility
Windows 3.1
(Enhanced)
OS/2 2.1
Windows NT 3.
Compatibility
DOS
DOS In VDM
DOS Emulation
DOS Emulation
Device Drivers
Yes
Yes
No
Multitasking
Preemptive
Preemptive
Preemptive
TimesSicing
Timeslicing
Timeslicing
Priority
Protection
Static
Dynamic
Dynamic
- System
No
Yes
Yes
- Application
No
Yes
Yes
Configuration
P!F
DOS Settings
Registry
Copyright © 1994 Kogan Associates, Inc.
System Capabilities
Windows 3.1 OS/2 2.1 Windows NT 3.1
(Enhanced)
I/O
- Overlapped I/O
No
Yes
Yes
- Asynchronous I/O
No
Yes
Yes
- Command Chaining
No
Yes
Yes
- Scatter/Gather
No
Yes
Yes
ay ty B
- I ikj
No
Yes
Yes
- Device Driver Model
16-Bit
16/32-Bit
32-Bit
Power Management
Yes
Yes
Yes
Multimedia
Yes
Yes
Yes
Pen Extensions
Yes
Yes
Yes
Workgroup Support
Yes
Add On
Yes
International Support
Yes
^^opyright © 1994 KoganXfsociates, Inc.
Win16 Applications
Windows 3.1
(Enhanced)
OS/2 2.1
Windows NT 3.1
Compatibility
-
DPMI-based
WINOS2 In
VDM
WOW- Win16
To Win32
Mapping
Device Drivers
Yes
Yes
No
Virtual Device
Yes
No
No
Drivers (VxD)
Multitasking
Cooperative
Cooperative
And/Or
Preemptive
Cooperative
Protection
- System
No
Yes
Yes
- Applications
No
Yes No
Copyright © 1994 Kogan Associates, Inc.
Chicago/Windows 4.0
* Expected 4Q94, 1Q95
» Hardware
- 32-bit x86 Only
- Mo Multiprocessors
- 4MB RAM Minimum
« Compatibility
- DOS
- Windows 3„X
« Wsn32c
« 32=Bst OLE 2=0
* Asynchronous Input Queues
« Object Oriented GUI (Explorer)
« Systems Management
Copyright ©1994 Kogan Associates, Inc.
OS/2 2.2
■ Expected 4Q94
« Hardware
- Better 4MB Minimum System
- OS/2 BMP
- More Drivers, Better Preload Support
= Compatibility
- DOS 6„X
- Win VxDs, Win32s
« PM/Workpfaee
- Enhanced Workplace Controls
- 32-Bit PMW1M, Asynchronous input Queues
- Distributed SOM, OpenDoc
■ Security
Copyright © 1994 Kogan Associates, Inc.
Chicago/Windows 4.0
Copyright ©1994 Kogan Associates, Inc.
OS/2 2.2
Copyright ©1994 Kogan Associates, Inc.
Daytona/Windows NT 3.5
■ Expected 3Q94
■ Hardware
- Lower Memory Requirements
- Better Performance
- More Drivers
= Bug Fixes
» Multiple WOW Environments
« 32-Bit OLE 2n0
H More Networking Support
« No Chicago GUI Extensions
Copyright © 1994 Kogan Associates, Inc.
Power OS/2
• Expected 2H95
■ PowerPC OS/2 System Implementation Based On
Mach 3.0 Microkernel Technology
» Hardware
- PowerPC And x86
- 12-16MB RAM Minimum
- SMP In Future
. Multiple Operating System Personalities
- DOS, Windows, OS/2 Initially (OS/2 2.X Feature Set)
- A1X, Macintosh, Pink In Future ???
. Security
Copyright ©1994 Kogan Associates, Inc.
Daytona/Windows NT 3.5
DOS Subsystem
Win32 Subsystem
NT Executive
Executive Services
Device Drivers) Hardware Abstraction |
Kernel
Machine Dependent Code
Hardware
Coovriat
it © 1994 Koqan Associate!
Power OS/2
System Capabilities
Windows 4.0
OS/2 2.2
Windows NT 3.5
Power OS/2
System
DOS Extender
Monolithic
Layered
Layered
Technology
Monitor
Microkernel
Microkernel
Multitasking
- DOS
Preemptive
Preemptive
Preemptive
Preemptive
- Win16
Cooperative
Preemptive
Preemptive
Preemptive
- 32-Bit
Preemptive
Preemptive
Preemptive
Preemptive
Compatibility
- DOS
Full
Full
Partial
Partial
- Win16
Most
Most
Partial
Partial
- Device Drivers
Most
Most
No
No
Protection
Some
Yes
Yes
Yes
SMP
No
OS/2 SMP
Yes
Yes
Portability
- Application
Win32c
OS/2 32-Bit
Win32
OS/2 32-Bit
- System
No
No
Yes
Yes
User Interface
Explorer
Workplace
Program, File,
Workplace
Shell
Print Mngrs Shell
Copyright ©f994 Kogan Associates, In
DOS Compatibility
Windows 4.0
OS/2 2.2
Windows NT 3.5
Power OS/2
Compatibility
DOS inVDM
DOS Emul.
DOS In VDM
DOS Emul.
DOS Emul.
DOS Emul.
Device Drivers
Yes
Yes
No
Maybe
Multitasking
Preemptive
Preemptive
Preemptive
Preemptive
Timeslicing
Timeslicing
Timeslicing
Timeslicing
Priority
Protection
Dynamic
Dynamic
Dynamic
Dynamic
- System
Yes
Yes
Yes
Yes
- Application
Yes
Yes
Yes
Yes
Configuration
Registry
DOS Settings
Registry
DOS Settings
Copyright © 1994 Kogan Associates, Inc.
System Capabilities
Windows 4.0
OS/2 2.2
Windows NT 3.5
Power OS/2
m Security
Login
Integrated
Integrated
Integrated
■ File Systems
FAT
FAT/HPFS
FAT/HPFS/NTFS
FAT/HPFS
- I/O
- Overlapped I/O
Yes
Yes
Yes
Yes
- Async I/O
Yes
Yes
Yes
Yes
- Cmd Chaining
Yes
Yes
Yes
Yes
- Scatter/Gather
Yes
Yes
Yes
Yes
- 32-Bit I/O
Yes
Yes
Yes
Yes
- Device Driver
Model
16/32-Bit
16/32-Bit
32-Bit
32-Bit
h Power Mgmt
Yes
Yes
Yes
Yes
a Multimedia
Yes
Yes
Yes
Yes
- Pen Extensions
Yes
Yes
Yes
Yes
■ Networking
Yes
AddOn
Yes
Yes
- Inti Support
Yes
Yes
Yes
Yes
■ Plug&Play
Yes
Yes
? ?
Copyright ©1994 Kogan Associates, Inc.
WIn16
Applications
Windows 4.0
OS/2 2.2
Windows NT 3.5
Power OS/2
■ Compatibility
Win16
DPMI-based
WOW-Win16
DPMI-based
WINOS2 In
To Win32
WINOS2 In
VDM
Mapping
VDM
■ Device Drivers
Yes
Yes
No
Maybe
s Virtual Device
Drivers (VxD)
Some
Some
No
No
■ Multitasking
Cooperative
Cooperative
Cooperative
Cooperative
And/Or
And/Or
And/Or
Preemptive
Preemptive
Preemptive
■ Protection
- System
No
Yes
Yes
Yes
- Applications
No
Yes
Yes
Yes
Copyright © 1994 Kogan Associates, Inc.
Windows 32-Bit API
■ Win32s
- Compatible 32-Bit Version Of Windows 16-Bit
Standard Mode APIs For Windows 3.1
» Win32c
- An Enhanced Version Of The Windows 16-Bst
Standard Mode APIs For Chicago/Windows 4.0
- Adds Preemptive Multitasking. Multithreading, IRC,
Protection, GUI Enhancements
- Win32
- FuiS Funtionality Only On Windows NT
- includes More Mission Critical Features
Copyright ©1994 Kogan Associates, Inc.
Win32s For Windows 3.1
■ 32-Bit Windows Subset API
a Enables Flat Memory Model
® Expands Critical Data Structures To 32-Bit
B Modified Window Messaging Protocol
■ Memory-mapped Files
® Better Performance For Bata-intensive Apps In
Single-tasking System
Copyright ©1994 Kogan Associates, Inc.
Windows 32-Bit AP! Compatibility
-Win32
-Win32c-
-Wj f» 32 s — -—-
Chicago
Windows 4.0
Copyright © 1994 Kogan Associates, Inc.
Win32c For Chicago/Windows 4.0
* Win32s*
- Preemptive Multitasking
■ Memory Protection
- Multithreading
- IRC
■ Asynchronous Input Queues
» Object-Oriented GUI Controls
Copyright © 1994 Kogan Associates, Inc.
Win32 For Windows NT
OS/2 32-Bit API
■ FuSS Function Mission Critical API
■ Win32c+
- Advanced Graphics
- Networking
- Security
- Unicode
Copyright © 1994 Kogan Associates, Inc.
32-Bit Applications
Win32s
OS/2
Win32 On
On WIn3 D 1
32-Bit
Windows NT
Multitasking
Cooperative
Preemptive
Preemptive
Input Queue(s)
Single
Multiple
Multiple
Synchronous Synchronous
Asynchronous
Multiple Threads
No
Yes
Yes
Memory Mgmt
- Flat Memory
Yes
Yes
Yes
- Separate Process
No
Yes
Yes
Address Spaces
Protection
- System
No
Yes
Yes
» Application
No
Yes
Yes
Copyright © 1994 Kogan Associates, Inc.
« Enhanced 32-Bit Version Of OS/2 16-Bit APS
■ Processor And MP Transparency
« Enables Development Of Portable Modules
■ Enhanced Function
■ Increased System Limits
Copyright © 1994 Kogan Associates, Inc.
32-Bit Applications
Win32s
OS/2
Win32 On
On Wm3„1
32-Bit
Windows NT
- IPC
No
Yes
Yes
■ Exception Mgmt
Yes
Yes
Yes
■ Memory-mapped
Files
Yes
No
Yes
® Security
No
Add On
Yes
■ Remote Procedure
Calls (RPC)
No
Add On
Yes
Copyright ©1994 Kogan Associates, Inc.
32-Bit Applications
Windows 4.0
OS/2 2.2
Windows NT 3.5
Power OS/2
API
Win32c
OS/2 32-Bit
Win32
OS/2 32-Bit
Multitasking
Preemptive
Preemptive
Preemptive
Preemptive
Input Queues)
Multiple
Multiple
Multiple
Multiple
Asynchronous
Asynchronous Asynchronous Asynchronous
Multiple Threads
Yes
Yes
Yes
Yes
Memory Mgmt
- Flat Memory
Yes
Yes
Yes
Yes
_ Unique Process
Yes
Yes
Yes
Yes
Address Spaces
- System
Some
Yes
Yes
Yes
- Application
Yes
Yes
Yes
Yes
Copyright © 1994 Kogan Associates, Inc.
32-Bit Applications
Windows 4.0
OS/2 2.2
Windows NT 3.5
Power OS/2
. SPC
Yes
Yes
Yes
Yes
* Exception Mgmt
Yes
Yes
Yes
Yes
» Memory-mapped
Yes
No
Yes
Maybe
Files
■ Security
Login
Yes
Yes
Yes
» Remote Procedure
Add On
Add On
Yes
Yes
Calls (RPC)
■ Object Mode!
COM
SOM
COM
SOM
■ Gompund
OLE 2.0
OnenDoc
QLE 2.0
n-
vpcuuuv
Documents
Copyright © 1994 Kogan Associates, Inc.
Windows Platform Strategy
» Windows 3.1
- x86 Client
» Chieago/WIndows 4,0
- x86 Client
■ Windows HT
- RISC Client
- Server
- Developer System
a ISVs Can Build Apps That Work Across Windows
Family Of Products
Copyright ©1994 Kogan Associates, Inc.
Windows Migration Issues
. Different Feature Sets Make Maintaining Single
Source Code For Win32s, Win32c, Win32 Difficult
. Win32s On Windows 3.1 And Chicago Do Mot Meet
Requirements For Multitasking And Protection
• Can't Have Compatibility And Performance (3.1) With
Mission Critical Features (NT)
« Chicago Does Not Go Far Enough To Fill Gap In
Product Line
. Chicago GUI Features Not Available On Windows NT
Copyright © 1994 Kogan Associates, Inc.
OS/2 Platform Strategy
- OS/2 2.X
- x@6 Client
- x86 Server (pre-Power OS/2)
- Developer System (pr@=Power OS/2)
■ Power OS/2
- RISC Client
- Server
- Developer System
■ Continued Enhancement Of API And System
Functions To Exploit Evolving Technologies
Copyright © 1994 Kogan Associates, Inc.
Challenges For Windows
■ Deliver Chicago As Promised
■ Lever Chicago Into OEM Preload Market As Successor
To Windows 3.X
■ Update Windows NT To Chicago Functionality
■ Elaborate Chicago To Cairo Direction
Copyright © 1994 Kogan Associates, Inc.
OS/2 Migration Issues
* Strategy is Straightforward
■ Single Full-Function API Across Ail Platforms
■ OS/2 2„X is Squeezed To Middle Ground
- Provides Compatibility Of Windows 3d AND
Provides Mission Critical Features Of Windows NT
On A Larger Volume Of Systems
- Will Compete With Chicago/Windows 4.0
- Has Large Head Start On Chicago
■ Power OS/2 To Compete With Windows NT
Copyright ©1994 Kogan Associates, Inc.
Challenges For OS/2
0 Pursue ISVs
- 32-Bit OS/2 Applications
- Tools & Support
® Pursue OEM Preload Market
* Aggresive Marketing, Advertising, And Promotion
= Deliver OS/2 2.2 And Power OS/2 Beta
a Elaborate Product Packaging Strategy
Copyright © 1994 Kogan Associates, Inc.
Summary
- IBM Has The System That Microsoft Heeds Today
- OS/2 2.X
a Microsoft Has The System That IBM Heeds Tomorrow
- Windows NT
Copyright © 1994 Kogan Associates, Inc.
Projections
- Ho Single System Will Dominate
h "And" World, Hot "Either/Or" World
. Market Will Be MultipSatform And Multivendor
» More Choices For Users And Corporations
® Heterogenous Distributed Systems
a Key issues
- Productivity
- Compatibility
- interoperability
- network Management
- Return On investment
Copyright ©1994 Kogan Associates, Inc.
Predictions
• Chicago Will Ship End Of 1Q95
- Will Need More Memory Than Expected
- Will Not Immediately Spark Massive 3.1 Upgrade
- Will Have Stability, Compatibility, And Migration
Typical Of First Release
- IS Will Watch From Sidelines
- Windows 4.1 Will Ship 4Q95
. OS/2 2.2 Will Ship 4Q94
. Windows NT 3.5 Will Ship 3Q94
. Power OS/2 Will Ship 1H95
- First Release Blues
- Similar To Windows NT Sn Performance, Hardware
Required, And Compatibility But Better OOUI
Copyright @1994 Kogan Associates, Inc.
The Design Of OS/2, 2nd Edition
■ Highlights
- Updated to cover OS/2 2.1, 2.2, OS/2 for Windows,
OS/2 for SMP, Workplace OS, OS/2 for PowerPC
- New chapters on Multimedia, Multiprocessors, and
Microkernels
- Expanded coverage of latest microprocessor
technologies (Pentium, PowerPC, Alpha) and
system architectures
. Ordering info email !nternet:os2@aw.com
. 1st edition comments and suggestions email
Internet:76711.212@compuserve.com or
Compuserve:76711,212
Copyright ©1994 Kogan Associates, Inc.
0303
Industry Trends
Eye On OS/2
Kogan Associates; !nc=
Computer Consulting Si Education Services
« 1980s
- Personal Computing On Micros
- Productivity/Entertainment Applications
- Single-tasking, Limited Mission-Critical Orientation
- Evolution Of GUL Multimedia
- 1930s
- Industrial-strength Computing On Micros
- Personal Productivity + Mission-Critical Apps
- Multitasking, integration Of GUI And Multimedia
- Distributed Systems/Open Systems
- Downsizing
Copyright © 1994 Kogan Associates, Inc.
Software Trends
■ 32-Bits And Beyond
■ Cross-Platform
- Processor/instruction Set Ind@p@ndene@\
- Device Independence
- Multiprocessor Independence
- Scalability
» Object Orientation
- Enhanced Programming Productivity
- Better Structuring, Module Reuse, Better Quality
- Helps Meet Cross-Platform Goals
a Multimedia integration/Exploitation
« Backward Compatibility
Compatibility
. DOS 6.X
■ Windows VxDs
- Win32s API Compatibility
* Chicago
Copyright © 1994 Kogan Associates, Inc.
Copyright ©1994 Kogan Associates, Inc.
OS/2 API Enhancements
Presentation Manager
Console I/O Interfaces
Memory-Mapped Flies
Better Debugging API
Asynchronous Exception Capability
Workplace Shelf Interfaces
32-Bit PMWIN internals
- Better Performance
- Better Memory Utilization
Asynchronous Input Queues
Workplace Shell GUI Enhancements
- Better Look And Feel
- Front Panel Control
- Enhanced Task Manager
Copyright © 1994 Kogan Associates, Inc.
Copyright ©1994 Kogan Associates, Inc.
Object Technology
Network Integration
Distributed System Object Model
- SOM2 Or Workstation SOM
- Supports Interprocess Object Management
- CORBA-Compliant IDL
- Workplace Shell Mo Longer Object Server
OpenDoc
- Component-Based Compound Document
Technology
- OLE Support 8s Vital
- OpenDoc is Superior But OLE Is Defacto Standard
* Network Transport Services (MTS/2)
■ Peer Services
■ LAM Requestor
« Workgroup DSOM
a OSF DCE/DME Extensions
- Sockets
- Remote Procedure Calls (RPC)
■ Security
- Login (C2)
- Discretionary Access Control (C2)
- Mandatory Access Control (B2)
Copyright ©1994 Kogan Associates, Inc.
Copyright ©1994 Kogan Associates, Inc.
OS/2 2.2
» Hardware
- Better Performance, Better Memory Utilization
- More Drivers, Better Preload Support
a Compatibility
- DOS 6„X
- Win VxDS, Win32s
« PM/Workplaee
- 32-Bit PMWIN
- Asynchronous Input Queues
- Distributed SOM, OpenDoc
a Network integration
■ Better Productivity Tools
Copyright ©1994 Kogan Associates, Inc.
Mach System Architecture
t
User
Mode
Supervisor
Mode
I
Copyright ©1994 Kogan Associates, Inc.
Microkernel API
Machine Independent Microkernel Services
Multitasking IPC Memory Management
Machine Dependent Microkernel Code
Int/Excp Mgmt Cache Ctrl DMA Ctrl Bus Ctrl I/O Dev Time Mgmt
Mach Microkernel Technology
■ Result Of Research On Portable Multiprocessor
Exploitation At Carnegie Mellon University
» Microkernel = Abstraction Provides
Machine-independence/Machine-Dependence For
Operating Systems in Multiprocessor Environments
» Client-Server Message-Passing Architecture
* Ported To Wide Variety ©f Processor Arad mP
Architectures
» Funded By DARPA
- Ongoing Research
« Industry Standard Open Microkernel
Copyright ©1994 Kogan Associates, Inc.
Power OS/2
. Portable OS/2 System Implementation That Enables
OS/2 On Non-x86 Platforms
• Workplace OS Technology
• IBM/Mach 3.0-Based Microkernel
■ 32-Bit Portable Device Drivers
« 32-Bit File Systems
. Symmetric Multiprocessing
• Security
. Multiple Operating System Personalities
- DOS, Windows, OS/2
Copyright ©1994 Kogan Associates, Inc.
OS/2 2.X System Architecture
Supervisor
Mode ~
! vdm Services OS/2 Kernel
T Virtual Device Drivers IPC Program Management
~ Multitasking Memory Management
Hi Device Drivers 1 ] . I/O & File Systems Snt/Excp Management |
Copyright ©1994 Kogan Associates, Jnc.
Why Take The RISC In 1994?
- Pentium And x86-Compatibles Continue x86 Market
Dominance
■ OS/2 2.X And Chicago Extend Life Of x86 Systems
» PowerMac Remains Limited
■ Ho Prime Time OS Available For RUSC-based PCs
■ DOS And Windows 3.X Emulation On RISC Still Has
Poor Performance And Compatibility
Copyright ©1994 Kogan Associates, Inc.
Power OS/2 System Architecture
Supervisor
Mode Microkernel API
I Machine Independent Microkernel Services
v Multitasking IPC Memory Management
Machine Dependent Microkernel Code
Int/Excp Mgmt Cache Ctrl DMA Ctrl Bus Ctrl I/O Dev Time Mgmt
Copyright© 1994 Kogan Associates, Inc.
Multiprocessing
■ Multiprocessors Enhance Performance By Enabling:
- Multiple Single-threaded Applications To Run
Concurrently
- Multiple Threads Of A Single Parallel Application To
Run Concurrently (Algorithmic Parallelism)
■ Multiprocessor Solutions Benefit Processor-Bound
Applications
- Numeric intensive Computing
- Applications Servers
« Multiprocessor Architectures
- Assymetric vs. Symmetric
- Tightly-coupled vs. Loosely-coupled
Copyright ©1994 Kogan Associates, Inc.
OS/2 Future Synergy
. OS/2 2.X
- x86-Sp@dfic And Exploitative
- From Entry-Level To High-End x86
- x86 Uniprocessor And Multiprocessor
■ Power OS/2
- Cross-Platform Portability (PowerPC And x86)
- From High-End x86 Up
- Symmetric Multiprocessing
Copyright ©1994 Kogan Associates, Inc.
OS/2 BMP
m Targets Tightly-Coupled x86 SMP Platforms
■ Allows x86 Users To Scale Performance Without
Leaving x86 Architecture
■ Small Footprint (Client) Or Large Footprint (Server)
* Platform-Specific Driver Architecture For
SMP-Independence
■ Enhancements To Device Driver Model
■ Limited Kernel Reentrancy In First Release
■ Future Release To Have More Kernel Reentrancy
Copyright ©1994 Kogan Associates, Inc.
Summary
• OS/2 Has
- Window Of Opportunity To Be Dominant 32-Bit
Client And Server
- Clear Technological Path To Future
- OS/2 Needs
- 32-Bit Native Applications (Win Hearts Of ISVs)
- Preload OEM Sales (Win Hearts Of OEMs)
- Continue Aggressve Marketing And Sales
- Enhance Packaging And Distribution Options
Copyright ©1994 Kogan Associates, Inc.
The Design Of OS/2, 2nd Edition
Highlights
» Updated to cover OS/2 2.1, 2.2, OS/2 for Windows,
OS/2 for BMP, Workplace OS, OS/2 for PowerPC
- New chapters on Multimedia, Multiprocessors, and
Microkernels
- Expanded coverage of latest microprocessor
technologies (Pentium, PowerPC, Alpha) and
system architectures
Ordering info email Intern@t:os2@aw.eom
1st edition comments and suggestions email
Internet:76711.212@compuserve.com or
Compuserve:76711,212
Copyright ©1994 Kogan Associates, Inc.
OS04
History Of RISC
Platform Wars
Kogan Associates, Snc,
Computer Consulting & Education Services
Execution Time = Instructions K
Clocks
Instruction
*
Time
Clock
Copyright ©1994 Kogan Associates, Inc.
History Of RISC
RISC Compilers
« Complexity in Instruction Sets Limited Performance
Of Processors
a Compilers Rarely Used Complex Instructions
- Instruction Decode And Complexity Moved From
Runtime Hardware To Compile-time Software
a Closes The "Semantic Gap" Between Compiler And
instruction Set
* Resulting Architecture = Reduced Instruction Set
Computer
H Are Part Of The Chip Conceptually
■ Are More Processor-specific Than Ever
n Must Generate Processor-Specific Code For Best
Performance
d Perform instruction Decoding, Selection, And
Scheduling
■ Must Reduce Idle Cycles And Stalls
® Loop Unrolling, Software Pipelining
Copyright © 1994 Kogan Associates, Inc.
Copyright © 1994 Kogan Associates, Inc.
In Each Generation...
b More Sophisticated Software Technology
■ increases Demand For Memory Bandwidth
■ Evolving Manufacturing Technology
- Smaller Circuits
- Faster Clock Rates
RISC Evolution
■ 1st Generation
- Simplification Of instruction Set And Hardware
a 2nd Generation
- Pipelined Microprocessors
- Single Cycle instruction Execution
■ 3rd Generation
- Superscalar Microprocessors
- Exploit Instruction-Level Parallelism
- Multiple Instructions Per Cycle Execution
b 4th Generation
- Very Long Instruction Word
Copyright ©1994 Kogan Associates, Inc.
3-Stage Pipeline Execution Model
Cycle 1 Cycle 2 Cycle 3 Cycle 4 Cycle 5 Cycle 6
Instruction 1
instruction 2
Instruction 3
Instruction 4
Copyright ©1994 Kogan Associates, Inc.
Degree-2 Superscalar Execution Model
Cycle 1 Cycle 2 Cycle 3 Cycle 4 Cycle 5 Cycle 6
Instruction 1
Instruction 2
Instruction 3
Instruction 4
Instruction 5
Instruction 6
Instruction 7
Instruction 8
x86 vs. RISC
■ Architectures
■ Performance
• Market
■ Cost
■ x86 Compatibility
■ Software
Copyright @1994 Kogan Associates, Inc.
RISC Solutions
■ Traditionally Packaged As Workstations
- RISC Processor
- 16+MB HAM
- 500+MB DASD
h Attractive For Large Applications That Are Not
Feasible On 16-Bit Desktop Systems
- Engineering And Scientific Sectors
- Early Downsizing Of Mlni/Mainframe Programs
■ Also Used As Controllers In Embedded Systems
Copyright @1994 Kogan Associates, Inc.
Intel Pentium (P54C) Microprocessor
« 5th Generation CPU, Successor To 80486
■ 3.3M Transistors
s 3,3V, 10W @ 100MHz
■ ,6 Micron BICMOS Fabrication
- Full x86 Compatibility
Copyright @1994 Kogan Associates, Inc.
Intel Pentium (P54C) Microprocessor
■ Multiprocessor Enabled
® integrated Advanced Programmable interrupt Ctrl
(APIC)
H Degree-2 Superscalar
« issue 2 ints, Execute 2 lots, Ifp
a Pipelined Floating Point
■ Dynamic Branch Prediction
® Separate 8KB Instruction And Data Caches
« Virtual 8086 Mode And Paging Enhancements
® Provides Workstation Power On Desktop Platforms At
Desktop Price
Copyright © 1994 Kogan Associates, Inc.
PowerPC 603
a 1.6M Transistors
« 3.3V 5 3W @80 MHz
a o65 Micron CMOS Fabrication
® Separate 8KB instruction And Data Caches
■ Separate Load/Store Unit
a Register Renaming
Copyright © 1994 Kogan Associates, Inc.
PowerPC 601
« 2.8M Transistors
. 3.6V, 10W @ 80MHz
« J Micron CMOS Fabrication
a Multiprocessor Enabled
a Degree-3 Superscalar
a Issue 2lnts+lFp s Execute lint+IFp
« Static Branch Prediction
« Single 32KB Cache
Copyright © 1994 Kogan Associates, Inc.
PowerPC 604
« 3.6M Transistors
H 3„3V, 13W@100MHz
■ =65 Micron CMOS Fabrication
a Degree-4 Superscalar
® Issue 2ints+1Fp+1 Mem
E Speculative Execution
a Out Of Order Execution
a Register Renaming
= Dynamic Branch Prediction
a Separate 16KB Instruction And Data Caches
* Samples 4Q94 5 Volumes 1Q95
Copyright ©1994 Kogan Associates, Inc.
Performance
» Speed
- RISC Instruction Set Promotes Optimal Pipelining
And Superscalar Exploitation
- RISC is Superior Method Of Encoding Programs
With Current Microprocessor Technology
B Size
- RISC Has Higher RAM And OASO Requirements
- RISC Has More instructions, Larger Code
- RISC Alignment And Scale Produce Larger Data
- Software Portability Requirements Makes For
Larger, Costlier Systems
Copyright © 1994 Kogan Associates, Inc.
Pentium/PowerPC Projected Performance
Copyright © 1994 Kogan Associates, Inc.
Performance Benchmarks
Most Benchmarks
- Are Not Accurate Performance Indicators
- Only Simulate/Approximate Real Programs
Must Compare Equal Environments With Same
Application Set
Compilers Can Perform Unnatural Optimizations On
Benchmarks
Copyright ©1994 Kogan Associates, Inc.
x86 Futures
Pentium Microprocessor Successors
- Beyond 100MHz (150, 200)
- =4 Micron Fabrication
- Larger On-chip Caches
x8S Compatibles
- AMD K5
- Cyrix Ml
- NexGen Nx586
- IBM
Copyright © 1994 Kogan Associates, Inc.
Intel P6
Intel/HP
x86 Compatible
-6M Transistors @ A Micron Fabrication
-300 Intel MIPs, 200+ !Spec92
Expected 4095
Speculation
- Simultaneous issue Of Int And Fp instructions
- 64-Bit Linear Addressing
- Larger On-Chip Caches
- Higher Clock Rates
- Speculative Execution
- Out Of Order Execution
- Register Renaming
Copyright © 1994 Kogan Associates, Inc.
1998 Timeframe
Intel P7 + HP PA RISC + VLIW = P86
x86 Compatible
Enables Exploitation Of Native instruction Set
Performance Potential Beyond RISC
Copyright ©1994 Kogan Associates, Inc.
PowerPC Futures
601 +
“ .5 Micron Fabrication
- 2.5V, 4W@100MHz
- Expected 4Q94 (601+)
615
- On-chip 486 emulation support
- Expected 2H95
620
- High-End Offering
- >200 ISpec92
- 64-Bit implementation Of PowerPC Architecture
- Expected 2Q95
Market Dynamics
What Users Want
What Business Users Want
What Software Developers (ISVs) Want
What Hardware Developers (OEMs) Want
Decisions Made By Each Group influenced By
- Cost
- Value
- Quality
- Performance
- Availability
Copyright © 1994 Kogan Associates, Inc.
Copyright © 1994 Kogan Associates, Inc..
Market Growth
Cost Issues
Projected Unit Sales Of PCs And Workstations
Million*
00 —
1902 1 003 1 004
* Indudo* BOOK PowerPC M»oirto«h Sy*l«m*
Copyright © 1994 Kogan Associates, Inc.
x86 Has Lower Cost Since Development Cost is
Amortized Over Large Volumes
RISC Has Higher Cost Since Development Cost Is
Amortized Over Significantly Lower Volumes
x86-Based PCs Have Better Price/Performance
Small x86-Based System Margins Favor x86
Copyright ©1994 Kogan Associates, Inc.
DOS Compatibility On RISC Windows 3.X Compatibility On RISC
Largest Installed Software Base
Compatibility Options
- x8© Real Mode Emulators
► Emulate Complete x8© Real Mode PC
» Compatibility Acceptable
► Performance Penalty For Emulation
► insignia SoftPC
- 386/48© Coprocessor
► Offloads DOS Programs From Main RISC CPU
► Native x8© Performance And Compatibility
- On-chip x86 Emulation
2nd Largest, Fastest Growing Installed Base
Windows 3.X Emulators/Binary Translators
- Maps Windows Calls into Native Environment
> Windows NT Maps To Win32
- UNIX Offerings Map To XServer
- Limited Compatibility
- No Device Driver Support
- Large Performance Penalty
- 1©MB RAM Requirement
- Insignia SoftWin, WABS
Not As Compatible As Emulating True x8© Protected
Mod© Environment Or 386/486 Coprocessor Option
Copyright © 1994 Kogan Associates, Inc.
Copyright © 1994 Kogan Associates, Inc.
Software
Cross-Platform Operating System Issues
x86
~ Availability
- Large installed Applications Base
- Cost Of Software Amortized Over Large Market
- Large Selection Of Software Tools
RISC
- Smaller installed Applications Base
- Higher Software Costs/Margins
- Software Distribution Problems Because Of
Proliferation Of Native instruction Sets
No Viable, Competitive Systems Ready Yet
Portable OS Hardware Requirements High
Different Binary Formats impacts Distribution,
Support, And Availability
Migration And Compatibility Critical
Volumes And Hearts Of ISVs Will Play Key Role In
Market Evolution
Copyright © 1994 Kogan Associates, Inc.
Copyright © 1994 Kogan Associates, Inc.
AppSe Platform
■ Migration From Motorola 680X0 to PowerPC
■ Client Or Server
■ Proprietary Operating System
■ Mozart (System 7,5,1994)
- PowerPC, 680X0
- System Uses Some Emulation On PowerPC
■ Copland (1995)
- PowerPC, 680x0
- Native PowerPC OS
- Preemptive Multitasking, Memory Protection
■ Gershwin (System 8,1996)
- PowerPC
- AppSe Microkernel
Windows Platform
= Windows 3„X
- x86 Low-end
■ Chicago (1995)
- x86 Client
= Windows NT
- x86, MIPS, Alpha, PowerPC, SPARC, HP-PA
- RISC-based PC Or Workstation
- Client Or Server
■ Cairo (1995-96)
Copyright ©1994 Kogan Associates, Inc.
Copyright ©1994 Kogan Associates, Inc.
OS/2 PSatform
. OS/2 2.X
- x86-Sp@clfic
- Uniprocessor And Multiprocessor
- Mission-critical Client Or Server
■ Power OS/2 (1995)
- PowerPC, x86
- Uses Mach-based IBM Microkernel
- RISC-based PC Or Workstation
- Client Or Server
■ Taligent (1995-96)
Copyright ©1994 Kogan Associates, Inc.
x86 vs. RISC Projections
« RISC Will Lead In High-End Performance
« x86 PCs w/32-Bit Operating Systems Are Grabbing
Share Of Workstation Market
- Continue To Dominate PC Market
- Push into Low And Mid-Range Portions Of
Workstation Market
* 1394 Will See Pentium Microprocessor Growth Easily
Accelerate Beyond Total RISC Market
= Pentium Provides Best Transition And Migration Path
From Current 16-Bit PC Platforms To 32-Bit
Workstations And Beyond
Copyright ©1994 Kogan Associates, Inc.
UNIX Platform
* SunSoft SoSaris^Nextstep (SPARC, x86, PowerPC)
* Unsvell (x86, PowerPC)
» IBM AlX/Personal AIX (PowerPC)
* COSE-OSF Alliance Compliance
« Vendor-specific Offerings
Copyright © 1994 Kogan Associates, Inc.
Platform Projections
» PowerPC Best Chance For Mainstream RISC
- Apple
- R S/6000
- Embedded Systems
■ RISC PC Market Slow To Move Until 1996 Earliest
- xB6 Competitors Fuel x86 Market Growth
- Chicago, OS/2, OS/2 BMP Give x86 More Life
- DOS/Windows Compatibility Lags On RISC
- ISVs Will Develop 32-Bit x86 Versions Of Software
First Due To Volumes And Tools
- Reluctance Of Apple To License System 7
- Windows NT And Workplace OS Not Ready For
Prime Time On RISC
Copyright ©1994 Kogan Associates, Inc.
The Design Of OS/2, 2nd Edition
Highlights
- Updated to cover OS/2 2.1, 2=2, OS/2 for Windows,
OS/2 for SMP, Workpiece OS, OS/2 for PowerPC
- New chapters on Multimedia, Multiprocessors, and
Microkernels
- Expanded coverage of latest microprocessor
technologies (Pentium, PowerPC, Alpha) and
system architectures
Ordering Info email lnternet:os2@aw.com
1st edition comments and suggestions email
!nt@rnet:70711 =212@compuserve 0 com or
Compus@rv@:76711,212
Copyright © 1994 Kogan Associates, hie.
OS05
OS/2 Windows Support,
Inside and Out ( OS05)
Ron Cadima & Allan Wynn
IBM Boca Raton
High Level Design
► Each Separate WIN-OS/2 Session runs in a
protected Virtual DOS Machine.
WIN-OS/2 display drivers write directly to the
video adapter hardware.
► Main Seamless design issues are serializing
and coordinating hardware access between
WIN-OS2 and PM display drivers.
► Other components of OS/2 modified to support
this (and other) operations.
Disclaimers
All information contained within this presentation is
based on tests performed in the IBM Boca Raton
Development Center, and is relative to the specific
levels of operating system code and hardware
configurations used. Results will vary based on
different hardware platforms, system setup, disk
layouts, and versions of software used.
Windows 3.1 Trademark of Microsoft Corp., Redmond,
Washington
OS/2 2.11 Trademark of IBM Corporation.
High Level Design
► Shield Threads used to coordinate screen use
between Windows and OS/2.
- WINSHIELD, PMSHIELD
► Mutex Semaphore used
► PM Window Size is Windows Screen Size
► idle Sensitivity is a function of the Virtual
Device driver (VDD).
- System API functions to aid VDD.
High Level Design
OS/2 For Windows
Windows Application
["ySERl^"’ r GDL
Windows
liiliis:
windows
pisplay DP
PM Application
m
display DD|
: VWIN Virtual
'Device Driver
liiiiiij r
-lilllll
1
Graphics
; Engine
SHIELD
► Runs on OS/2 2.1 Base.
- Multithreading and Tasking
- Multiple Separate Copies
- Separate Virtual DOS Machines for DOS and
Windows 3.1 Sessions, as well as full OS/2
Support.
- HPFS Support.
OS/2 For Windows
► installs ON existing DOS/Windows 3.1.
- Now Support Windows 3.11 and Windows for
Workgroups
► Uses All Windows Code and Drivers.
► Uses Windows INI and GRP Files
► Provides greater application compatibility.
W1NOS2 Sessions
► Common Support
► OLE 2.0
► DDE ( Dynamic Date Exchange)
► Cut and Paste
► Multimedia Support
► Common or Separate Sessions
► Access to All OS/2 Resources
► Full Screen
- Usually provides better performance.
- Look and feel of Windows 3.1
- All Support provide (Accessories, Sound, etc.)
► Seamless
- Runs on OS/2 Desktop
- Sperate or Common Sessions
__ Import WINOS2 Settings
.► COM DIRECT ACCESS
- Direct Access to Hardware Port
- Used by only 1 active session
► COM HOLD
- Supports one session opening the port and
another accessing it.
► SNT DURING 10
- Allows interrupts during I/O
- Performed on Separate Thread
- Use for Multimedia and Communications.
Important Windows Settings
► WIN RUN MODE
- Standard
- Enhanced
► Always use for Floating Point
► WINjCLIPBOARD and WIN_DDE
- On is Public (OS/2, DOS, and W1N0S2)
- Off is Private
► Relative to current Session
► Faster execution
► Less Resources
Important W1N0S2 Settings
► DOS BACKGROUND EXECUTION
- Controls whether program runs when it does
not have foreground focus.
- Usually provides better performance to other
programs running in the system.
- DO NOT use for communication applications
► HW TIMER
- Provides access to hardware timers
- Use for Games, Multimedia, and other time
sensitive programs.
important WIN0S2 Settings
► MOUSE EXCLUSIVE ACCESS
- Give Program exclusive ownership of Mouse
- Minor Performance Gain
(. VIDEO SWITCH NOTIFICATION
- Notifies application when switch in screen
focus has been made.
- Turn off for WINOS2 Sessions.
i. VIDEO 8514 XQA IOTRAP
- Set on for WINOS2 Sessions
- Off for DOS applications and Games.
Resource Requirements
► Memory Requirements ( WINOS2)
► No Application
- 2.7 Megabytes
► DOS Support 1.2 Meg
► WSNOS2 1.5 Meg
► AMIPRO for Windows
- 3.7 Megabytes
- DOS Support 1.2 Meg
► W1NOS2 2.5 Meg
Note - Does not include extra System Resources.
Resource Requirements
► Disk Space (W1NOS2)
- Total of 9.2 Megabytes
► DOS Support 1.36
. WINOS2 7.78
. Readme 0.39
. Accessories 1.09
. Screen Saver 0.08
► Sound 0.27
Disclaimer _
The test results presented on the following pages
are based on test scenarios run at the IBM Boca
Raton Development Center in Boca Raton,
Florida. They are relative to the specific hardware
used, the setup of that hardware, and the
versions and setup of the software used. Results
will vary in all other circumstances.
_ Copyrights _
► Microsoft Corporation, Redmond, Wa.
- Excel
- WinWord
- Windows 3.1
► Lotus Development Corporation
- AmiPro for Windows
► IBM Corporation, Boca Raton, FL
- WSN0S2
-OS/2
Test Results
OS/2 2.1 W1NOS2 vs Windows 3.1
Test Full Screen Seamless
Excel 4.0 - 7% - 8%
Amipro 2.0 5% - 12%
Winword 2.0 - 2% - 5%
WinMark 3.11 -1% =22%
Minus means Slower
_ Test Description
► All Tests Run on Toshiba 4600C Portable
► 486SLC33 VGA System, 6 Meg of Memory.
► Excel & WinMark measures throughput
► Amipro and Winword measure time.
► Results base on average of 3 runs.
► Default install settings used for Windows 3.1
and applications.
► Disk cache size of 512 kb for Windows 3.1 and
128K for OS/2
Planned WINOS2 Changes
► Reduced memory requirements
► Reduced code paths
► 32 Bit Seamless interface
► Improved Memory Management
s. Reduced Windows Overhead
Enhanced and Editable DOS Settings
Other Considerations
^ Hardware
- Video ( VGA, SVGA, XGA, etc.)
- Processor (Speed and Caching )
- Disk (Type and Access speed )
► Fragmentation and File Layout
► Environment
- Number and Type of Programs
- Session Settings
- System Setup
Disclaimer
0S/2.X Performance
Enhancements (OS06)
Ron Cadima & Allan Wynn
IBM Boca Raton
This presentation is based on OS/2 Beta Level
code. Any features, options, and performance
results are subject to change when this version
of OS/2 becomes a generally available Product.
Information will be given In the formal
presentation that is not included in these charts.
Performance Enhancements
► OS/2 Program Loader / Linker
► Compiler Update
► 32 Bit Code
p- Memory Reductions
- Device Driver Support
► Product Installation
► Product Enhancements
OS/2 Loader and Linker
► New OS/2 Linker
► Supports EXEPACK 2
- Reduces EXE and DLL sizes up to 30%
- Improves Program Load and Run Times
_ Only Valid for OS/2 release built with this
support
- Equivalent support for packing Resources
OS/2 Loader and Linker
► OS/2 Loader modified lo handle new packing
- StiSS supports old packing mechanisms
► Loader optimizations
Memory Reductions
► Reduced Working Set
- Page Tuning
- Reorganize code based on usage
- Code Path Reductions
- Optimize code paths
> Remove redundant functions.
- Better Memory Management
- Global and Shared memory
Compiler Update
Using Latest Beta Version of IBM C/SET++
Areas converted to 32 Bit
- PM and SEAMLESS Support
- Workplace Support
Code Optimized for 486, Speed and Size
- Little impact on 386 class machines.
C/SET++ Provides Tools for Code Path Analysis
and Working Set Reductions.
- Allowed us to better tune memory page usage.
Memory Reductions
Reduced Working Set
- Improved Page Swapping
► Improved algorithm and analysis of data
► Zeroes compression
► Pre-Swap System DLLs
- Based all System DLLs
Memory Reductions
► Intelligent Settings
- CONFIG.SYS
- DOS / Windows Session Settings
- OS/2 System Settings
CONFIG.SYS Changes
These changes affect a system with less than 6
Megabytes of physical memory.
Setting
Values
2.11
New
THREADS
256
92
DSSKCACHE
128
48
BUFFERS
30
60
SWAPFILE SIZE
6144
12288
DOS
LOW s NOUMB
System Settings
.. . - .
The following System Settings have be modified
for systems with
less than 6 Mb of memory.
Setting
Values
2.11
New
WINOS2
DDE
Public
Private
CLIPBOARD
Public
Private
Mode
Standard
Enhanced
Installation Enhancements
► Multiple Printer installation Selection
► Enhanced CD-ROM Support
- Easier OEM Installation
► Enhanced Video Support
- More Adapters
► 6 Diskettes of video drivers
- Easier for OEMS to Add to List
► Multimedia Included In Base System
- Diskette and CD-ROM
Installation Enhancements
► Consistent Configuration Screens and Interface
- 3D Pushbuttons
- Basic Video Install
- Basic System install on 1st 7 Diskettes
► Improved CONFIG.SYS and AUTOEXEC.BAT
editing.
► Multiple Partition Format with Response Install.
Product Enhancements
► SOM2 and DSOM Support Integrated
- Allows Internet operability
► Dynamic LIBPATH by Process
► System Archiving Support
► Front Panel Driver
- SingaS Mouse Click to launch applications.
► Enhanced and Improved Tutorial
► Improved System Icons
DOS / Windows Support
► improved Settings Handling
- Logical Groupings
- Editable File Support
► DOS Subclass Priorities
► Reduce Number of True Type Fonts Loaded
► Reduced Memory Usage
► Reduc